text changes to registration mail content
[namibia] / module / Auction / src / Auction / DataBin / Basket.php
1 <?php
2 namespace Auction\DataBin;
3
4
5
6 /**
7  * Manage Basket data.
8  * @author andre.fourie
9  */
10 class Basket extends \Workspace\Service\DataBin
11 {
12
13         /**
14          * @var array
15          */
16         protected $meta = array(
17                         'Base'        => 'Basket',
18                         'DatasetName' => 'bids',
19                         'Entity'      => '\Auction\Entity\Basket',
20                         'JobField'    => 'auction',
21                         'References'  => array(
22                                         'auction' => '\Auction\Entity\Auction',
23                                         'company' => '\Company\Entity\Company',
24                                         'profile' => '\User\Entity\Profile',
25                                         'autoBasket' => '\Auction\Entity\AutoBasket'
26                         ),
27                         'Dependants'  => array()
28         );
29         /**
30          * @var array
31         */
32         protected $metaCreate = array(
33                         'Type'          => 'Create',
34                         'Contract'      => 'Recurring',
35                         'RequiredInput' => array(
36                                         'Basket' => array(
37                                                         'auction' => 'Id'
38                                         )
39                         ),
40                         'OptionalInput' => array()
41         );
42         /**
43          * @var array
44         */
45         protected $metaSetStatus = array(
46                         'Type'          => 'Update',
47                         'RequiredInput' => array(),
48                         'OptionalInput' => array(
49                                         'Basket' => array(
50                                                         'archived' => 'Boolean'
51                                         )
52                         )
53         );
54         /**
55          * @var array
56         */
57         protected $metaGrid = array(
58             'Type'          => 'Grid',
59                 'Export'        => true,
60                 'Builder'       => '\Auction\Report\BasketGrid',
61                 'Writer'        => '\Utility\Export\ExcelReport',
62                 'Output'        => 'Download',
63             'Contract'      => 'Recurring',
64                 'Options'       => array(
65                                 'Boolean' => array(
66                                                 'ExportToExcel' => false
67                                 )
68                 ),
69             'RequiredInput' => array(),
70             'OptionalInput' => array(
71                 'Grid'  => array(
72                     'NumberOfRecords' => 'Integer',
73                     'Page'            => 'Integer',
74                     'Filter'          => 'Array',
75                     'OrderBy'         => 'Array'
76                 )
77             ),
78             'Base'            => 'auction',
79             'NumberOfRecords' => 10,
80         'Query'           => 'SELECT [SELECTION]
81                                               FROM \Auction\Entity\Basket basket
82                                               JOIN basket.auction auction
83                                                           JOIN auction.company company
84                                                           JOIN company.region region
85                                                           JOIN auction.stock stock
86                                                           JOIN stock.vehicleYear vehicleYear
87                                                           JOIN stock.type type
88                                                           JOIN type.model model
89                                                           JOIN model.make make
90                                                           LEFT JOIN stock.exteriorColour exteriorColour
91                                                   LEFT JOIN auction.currentBid currentBid
92                                               [WHERE] [ORDER]',
93             'Selection'       => 'basket, auction, company, region, stock, vehicleYear, make, model, type, exteriorColour, currentBid',
94             'Filter'          => array(
95                                                                 'auction.jobState' => 'Active',
96                                                 'basket.archived'  => 0,
97                                                 'auction.archived' => 0
98                                              ),
99             'OrderBy'         => array('auction.created' => 'DESC'),
100             'Fields'          => array(
101                                                         'id',
102                                                         'archived',
103                                                         'auction' => array(
104                                                         'id',
105                                                         'created' => 'DateTime',
106                                                         'endDate' => 'DateTime',
107                                                         'jobState',
108                                                         'company' => array(
109                                                             'name',
110                                                             'region' => array(
111                                                                     'name'
112                                                             )
113                                                         ),
114                                                         'currentBid' => array(
115                                                                 'company' => array(
116                                                                         'id'
117                                                                 ),
118                                                                 'amount'
119                                                         ),
120                                                         'stock' => array(
121                                                             'created' => 'DateTime',
122                                                             'type' => array(
123                                                                 'name',
124                                                                 'model' => array(
125                                                                     'name',
126                                                                     'make' => array(
127                                                                           'name'
128                                                                     )
129                                                                 ),
130                                                             ),
131                                                             'vehicleYear' => array(
132                                                                 'name'
133                                                             ),
134                                                             'exteriorColour' => array(
135                                                                 'name'
136                                                             ),
137                                                             'km',
138                                                             'tradePrice',
139                                                             'retailPrice',
140                                         'listPrice'
141                                                         )
142                                                 )
143                                             )
144         );
145
146
147
148         /**
149          * Add some dynamic filtering to our grids.
150          */
151         public function __construct()
152         {
153                 $authData = \Utility\Registry::getAuthData();
154                 switch (\Utility\Registry::getUserType())
155                 {
156                         case 'B4C User':
157                                 $groupFilter = \Utility\Registry::getSudo('Group', false);
158                                 $divisionFilter = \Utility\Registry::getSudo('Division', false);
159                                 $companyFilter = \Utility\Registry::getSudo('Company', false);
160                                 if ($groupFilter && $divisionFilter && $companyFilter)
161                                 {
162                                         $this->metaGrid['Filter']['IDENTITY(basket.company)'] = $companyFilter;
163                                 }
164                                 break;
165                         case 'Group User':
166                                 $divisionFilter = \Utility\Registry::getSudo('Division', false);
167                                 $companyFilter = \Utility\Registry::getSudo('Company', false);
168                                 if ($divisionFilter && $companyFilter)
169                                 {
170                                         $this->metaGrid['Filter']['IDENTITY(basket.company)'] = $companyFilter;
171                                 }
172                                 break;
173                         case 'Dealer Principle':
174                                 $companyFilter = \Utility\Registry::getSudo('Company', false);
175                                 if ($companyFilter)
176                                 {
177                                         $this->metaGrid['Filter']['IDENTITY(basket.company)'] = $companyFilter;
178                                 }
179                                 break;
180                         default:
181                                 $this->metaGrid['Filter']['IDENTITY(basket.company)'] = $authData['company']['id'];
182                                 break;
183                         }
184         }
185
186 }