Line # Revision Author
1 492 vperunova package payments::SQL::CardsTable;
2
3 use base 'SQL::DocumentTable';
4
5 sub db_table
6 {
7 return 'payments_cards';
8 }
9
10
11 sub available_filters {
12 my @available_filters = qw(
13
14 _class_filter
15 _status_filter
16 _in_id_filter
17 _id_filter
18 _name_filter
19 _class_excludes_filter
20 _sfilter_filter
21 _excludes_filter
22 _s_filter
23
24 _uid_filter
25 _number_filter
26 );
27
28 return \@available_filters;
29 }
30
31 # ----------------------------------------------------------------------------
32 # Свойства храним в массивах, потому что порядок важен!
33 # Это общие свойства - одинаковые для всех документов.
34 #
35 # attr - обязательный параметр, название атрибута;
36 # type - тип аттрибута, требуется для отображдения;
37 # rusname - русское название, опять же требуется для отображения;
38 # hidden - равен 1, когда
39 # readonly - инициализации при записи только без изменения в дальнейшем
40 # db_field - поле в таблице
41 # default - значение по умолчанию (поле всегда имеет это значение)
42 # ----------------------------------------------------------------------------
43 sub required_properties
44 {
45 my $self = shift;
46
47 my @parent_properties = grep { $_->{attr} ne 'sections' } $self->SUPER::required_properties;
48 return (
49 @parent_properties,
50 {
51 'attr' => 'uid',
52 'type' => 'integer',
53 'rusname' => 'Уник профиля пользователя',
54 'db_field' => 'uid',
55 'db_type' => 'integer',
56 'db_opts' => "not null",
57 },
58 {
59 'attr' => 'number',
60 'type' => 'string',
61 'rusname' => 'Номер карты',
62 'db_field' => 'number',
63 'db_type' => 'text',
64 },
65 {
66 'attr' => 'month',
67 'type' => 'integer',
68 'rusname' => 'Месяц окончания действия карты',
69 'db_field' => 'month',
70 'db_type' => 'integer',
71 'db_opts' => "not null",
72 },
73 {
74 'attr' => 'year',
75 'type' => 'integer',
76 'rusname' => 'Год окончания действия карты',
77 'db_field' => 'year',
78 'db_type' => 'integer',
79 'db_opts' => "not null",
80 },
81 {
82 'attr' => 'cvv_cvc',
83 'type' => 'string',
84 'rusname' => 'Код проверки',
85 'db_field' => 'cvv_cvc',
86 'db_type' => 'text',
87 },
88 {
89 'attr' => 'type',
90 'type' => 'integer',
91 'rusname' => 'Тип платежной системы',
92 'db_field' => 'type',
93 'db_type' => 'integer',
94 'db_opts' => "not null",
95 },
96 {
97 'attr' => 'sections',
98 'type' => 'sections_list',
99 'rusname' => 'Секции',
100 'hidden' => 1,
101 'db_field' => 'sections',
102 'db_type' => 'integer',
103 },
104 );
105 }
106
107
108 ########### FILTERS DESCRIPTION ###############################################################################
109 sub _s_filter {
110 my ($self,%opts)=@_;
111 return undef unless ( exists $opts{s} );
112 return &SQL::Common::_generic_int_filter('d.sections', $opts{s});
113 }
114
115 sub _uid_filter {
116 my ($self,%opts)=@_;
117 return undef unless ( exists $opts{uid} );
118 return &SQL::Common::_generic_int_filter('d.uid', $opts{uid});
119 }
120
121 sub _number_filter {
122 my ($self,%opts)=@_;
123 return undef unless ( exists $opts{number} );
124 return &SQL::Common::_generic_text_filter('d.number', $opts{number});
125 }
126
127 1;