· 5 years ago · Oct 20, 2020, 01:06 AM
1<?php
2
3namespace Artsofte\MainBundle\Controller;
4
5use Artsofte\MainBundle\Filter\PollFormFilter;
6use Artsofte\MainBundle\Model\Geo\CityQuery;
7use Artsofte\MainBundle\Model\Poll\PollQuery;
8use Artsofte\MainBundle\Model\Review\ReviewQuery;
9use Fenrizbes\FormConstructorBundle\Propel\Model\Form\FcForm;
10use Fenrizbes\FormConstructorBundle\Propel\Model\Form\FcFormQuery;
11use Symfony\Bundle\FrameworkBundle\Controller\Controller;
12use Symfony\Component\HttpFoundation\JsonResponse;
13use Symfony\Component\HttpFoundation\Request;
14use Artsofte\MainBundle\Model\Currency\ExchangeCardRate;
15use Artsofte\MainBundle\Model\Currency\ExchangeCardRateQuery;
16use Artsofte\FormConstructorItemsBundle\Item\Listener\Handler\SendToCRMHandler;
17use Artsofte\OfficesAndATMsBundle\Model\OfficeQuery;
18use Fenrizbes\FormConstructorBundle\Propel\Model\Field\FcFieldQuery;
19
20class CommonController extends Controller
21{
22 const ITEMS_LIMIT = 18;
23
24 public function footerContactsAction()
25 {
26 $city_contacts = $this->get('artsofte.geo')->getCurrentCity()->getPhone();
27 if (empty($city_contacts)) {
28 $city_contacts = $this->get('artsofte.configuration')->getConf('main_phone');
29 }
30
31 $city_contacts = str_replace(array('/', '|', ';'), ',', $city_contacts);
32 $city_contacts = explode(',', $city_contacts);
33
34 return $this->render('ArtsofteMainBundle:Common:footer-contacts.html.twig', array(
35 'city_contacts' => $city_contacts
36// 'contacts' => CityQuery::create()
37// ->filterByCode($this->get('artsofte.geo')->getCurrentCity()->getCode(), \Criteria::NOT_EQUAL)
38// ->orderByTitle()
39// ->find()
40 ));
41 }
42
43 public function getCardCitiesAndOfficesAction() {
44 $cities = [];
45 $fc_form = FcFormQuery::create()->filterByAlias('city_cards')->filterByIsWidget(true)->findOne();
46 $fc_field = FcFieldQuery::create()->filterByFcForm($fc_form)->findOneByName('city');
47 foreach($fc_field->getParams()['choices'] as $city){
48 $cities[] = [ "id" => $city['value'], 'title' => $city['label'] ];
49 }
50
51 $offices = [];
52 $fc_form = FcFormQuery::create()->filterByAlias('office_new')->filterByIsWidget(true)->findOne();
53 $fc_field = FcFieldQuery::create()->filterByFcForm($fc_form)->findOneByName('office');
54 foreach($fc_field->getParams()['choices'] as $office){
55 $offices[] = [ "id" => $office['value'], 'title' => $office['label'] ];
56 }
57
58 return new JsonResponse(array(
59 'offices' => $offices,
60 'cities' => $cities
61 ));
62 }
63
64 public function saveLandingFormAction(Request $request)
65 {
66
67 // card_uno[type_credit1]:
68 // card_uno[Admitad]: Admitad_14
69 // card_uno[forma_zayavki2]: Заявка на банковскую карту UNO короткая
70 // card_uno[sales_funnel]: DebitCard
71 // card_uno[Type_card]: UNO дебетовая
72 // card_uno[type_card_uno]: Дебетовая
73 // card_uno[get]: Получить карту в офисе
74 // card_uno[office]: 25
75 // card_uno[fullname_lat]: TEST TEST
76 // card_uno[phone]: +7 (999) 999-99-99
77 // card_uno[Email]: test@test.com
78 // card_uno[daybirth]: 01.01.1990
79 // card_uno[agreement_credit]: 1
80
81
82
83 $fc_form = $this->get('fc.form')->findFcForm("credit_card");
84 $form = $this->get('fc.form')->create($fc_form);
85 $formData = $form->getData();
86
87 $typeCard = $request->get('type-card');
88 if ($typeCard != "debit" && $typeCard != "credit") {
89 return new JsonResponse(array(
90 'error' => "Неправильный тип карты"
91 ));
92 }
93
94 $formData['forma_zayavki2'] = 'Заявка на банковскую карту UNO короткая';
95 $formData['sales_funnel'] = $typeCard == "debit" ? 'DebitCard' : 'кред карты фл';
96 $formData['Type_card'] = $typeCard == "debit" ? 'UNO дебетовая' : 'UNO кредитная';
97 $formData['type_card_uno'] = $typeCard == "debit" ? 'Дебетовая' : 'Кредитная';
98
99 $formData['get'] = 'Получить карту в офисе';
100 $formData['office'] = $request->get('office');
101 $formData['fullname_lat'] = $request->get('fullname_lat');
102 $formData['phone'] = $request->get('phone');
103 $formData['Email'] = $request->get('email');
104 $formData['daybirth'] = $request->get('birthday');
105 $formData['agreement_credit'] = '1';
106
107 if (($success = $fc_form instanceof FcForm)) {
108 $ums_service = $this->container->get('artsofte.ums.crm');
109 $request_stack = $this->container->get('request_stack');
110 $handler = new SendToCRMHandler($ums_service, $request_stack);
111 // $handler->ajaxHandle($formData);
112 // return new JsonResponse(['success' => $success]);
113 }
114
115 return new JsonResponse(array(
116 'result' => $formData
117 ));
118
119
120 // $form = $this->get('fc.form')->create($fc_form);
121
122 // $formData = $form->getData();
123
124
125
126 // formData.append("username", "Groucho");
127
128 // if (($success = $fc_form instanceof FcForm)) {
129 // $ums_service = $this->container->get('artsofte.ums.crm');
130 // $request_stack = $this->container->get('request_stack');
131 // $handler = new SendToCRMHandler($ums_service, $request_stack);
132 // $handler->ajaxHandle($formData);
133 // return new JsonResponse(['success' => $success]);
134 // }
135
136 // return new JsonResponse(array(
137 // 'result' => 'test'
138 // ));
139 }
140
141 public function updateExchangeCardRateAction(Request $request)
142 {
143 $api_key = $request->query->get('api_key');
144 $real_api_key = substr(sha1("TX"), 0, 20) . substr(sha1(date('Y-m-d', strtotime('-1 day'))), 0, 20) . substr(sha1(date("Y-m-d")), 0, 20);
145
146 if ($api_key === $real_api_key) {
147 $usdBuyCost = $request->request->get('usd_buy_cost');
148 $usdSellCost = $request->request->get('usd_sell_cost');
149 $eurBuyCost = $request->request->get('eur_buy_cost');
150 $eurSellCost = $request->request->get('eur_sell_cost');
151
152 ExchangeCardRateQuery::create()->find()->delete();
153
154 $usd = new ExchangeCardRate();
155 $usd->setKeyFrom("USD");
156 $usd->setKeyTo("RUB");
157 $usd->setBuyCost($usdBuyCost);
158 $usd->setSellCost($usdSellCost);
159
160 $eur = new ExchangeCardRate();
161 $eur->setKeyFrom("EUR");
162 $eur->setKeyTo("RUB");
163 $eur->setBuyCost($eurBuyCost);
164 $eur->setSellCost($eurSellCost);
165
166 $usd_save_result = $usd->save();
167 $eur_save_result = $eur->save();
168
169 if ($usd_save_result && $eur_save_result) {
170 $result = 'Exchange rates have been updated';
171 } else {
172 $result = 'Exchange rates have not been updated';
173 }
174
175 return new JsonResponse(array(
176 'result' => $result ,
177 'usd_buy_cost' => $usdBuyCost, 'usd_sell_cost' => $usdSellCost,
178 'eur_buy_cost' => $eurBuyCost, 'eur_sell_cost' => $eurSellCost
179 ));
180 }
181
182 return new JsonResponse(array(
183 'message' => 'Wrong API key'
184 ));
185 }
186
187 public function getPassportIssuedByAction($department, Request $request)
188 {
189 // TODO: send ajax to dadata.ru
190
191 /* @var $focus_service \Artsofte\MainBundle\Service\DadataService */
192 $dadata_service = $this->get('artsofte.dadata_api');
193
194 /* @var $req_data \Artsofte\MainBundle\Model\FocusApi\ReqData */
195 $req_data = $dadata_service->test();
196
197 return new JsonResponse(array(
198 'result' => $req_data
199 ));
200 }
201
202 public function savePollAction(Request $request)
203 {
204 if (!$request->isXmlHttpRequest() || !$request->isMethod(Request::METHOD_POST) || !$request->get('poll_id')) {
205 throw $this->createNotFoundException('Page not found');
206 }
207
208 $poll = PollQuery::create()
209 ->filterByIsPublished(true)
210 ->filterById($request->get('poll_id'))
211 ->findOne();
212
213 $form = $this->createForm(new PollFormFilter($poll), null);
214 $form->handleRequest($request);
215
216 $success = false;
217
218 if ($form->isValid()) {
219 $votes = is_array($form->get('votes')->getData()) ? $form->get('votes')->getData() : array($form->get('votes')->getData());
220 $success = $poll->saveVote($votes, $request->getClientIp(), $request->getSession()->getId());
221 return new JsonResponse(array(
222 'success' => $success,
223 'poll_id' => $poll->getId(),
224 'poll' => $poll,
225 'poll_results' => $this->renderView('ArtsofteMainBundle:Poll:widget_result.html.twig', array(
226 'poll' => $poll
227 )),
228 'html' => $this->renderView('ArtsofteMainBundle:Poll:widget_success.html.twig', array(
229 'poll' => $poll
230 ))
231 ));
232 }
233
234 return new JsonResponse(array(
235 'success' => $success,
236 'poll_id' => $poll->getId(),
237 'html' => $this->renderView('ArtsofteMainBundle:Poll:widget_form.html.twig', array(
238 'form' => $form->createView(),
239 'poll' => $poll
240 ))
241 ));
242 }
243
244 public function reviewsAction($params)
245 {
246 return $this->render('ArtsofteMainBundle:Common:reviews.html.twig', array(
247 'items' => ReviewQuery::create()
248 ->filterByType($params['type'])
249 ->filterById($params['reviews'.$params['type']])
250 ->filterByIsPublished(true)
251 ->limit(6)
252 ->orderByCreatedAt(\Criteria::DESC)
253 ->find()
254 ));
255 }
256
257 public function reviewsAllAction(Request $request, $type, $limit = 0)
258 {
259 if(!$limit){
260 $limit = static::ITEMS_LIMIT;
261 }
262 $page = $request->get('page', 1);
263 return $this->render('ArtsofteMainBundle:Reviews:reviews_list.html.twig', array(
264 'items' => ReviewQuery::create()
265 ->filterByType($type)
266 ->filterByIsPublished(true)
267 ->orderByCreatedAt(\Criteria::DESC)
268 ->paginate($page, $limit)
269 ));
270 }
271
272 public function currencyOrderAction(Request $request)
273 {
274 $success = false;
275 $template = 'ArtsofteMainBundle:Form:layout.html.twig';
276 $city_code = (int) $request->get('city');
277 $geo_service = $this->get('artsofte.geo');
278 $current_code = $geo_service->getCurrentCity()->getCode();
279
280 $fc_form = $this->get('fc.form')->findFcForm('currency');
281 if (!$fc_form instanceof FcForm) {
282 return $this->render($template, array(
283 'form' => null
284 ));
285 }
286
287 $city_code && $geo_service->setCurrentCity($city_code);
288
289 $form = $this->get('fc.form')->create('currency', array(
290 'template' => $template
291 ));
292
293 $form->handleRequest($request);
294
295 if ($request->getMethod() == 'POST') {
296 if ($form->isValid()) {
297 $success = true;
298
299 $form = $this->get('fc.form')->clear($fc_form, array(
300 'template' => $template,
301 'data' => $this->get('fc.form')->initData($form->getData())
302 ));
303 }
304
305 if ($fc_form->getMessage()) {
306 $message = $fc_form->getMessage();
307 } else {
308 $message = $this->get('translator')->trans('fc.message.form.is_valid', array(), 'FenrizbesFormConstructorBundle');
309 }
310
311 $city_code && $geo_service->setCurrentCity($current_code);
312
313 return new JsonResponse(array(
314 'success' => $success,
315 'message' => $message,
316 'form' => $this->renderView($template, array(
317 'form' => $form->createView()
318 ))
319 ), 200, array(
320 'Content-type' => 'text/html'
321 ));
322 }
323
324 $city_code && $geo_service->setCurrentCity($current_code);
325
326 return $this->render($template, array(
327 'form' => $form->createView()
328 ));
329 }
330
331 protected function getLimit()
332 {
333 $menu = $this->get('fenrizbes_menu')->getCurrent();
334 $limit = (int) $menu->getExtra('entity')->getLimit();
335
336 if ($limit > 0) {
337 return $limit;
338 }
339
340 return static::ITEMS_LIMIT;
341 }
342}
343