Exemple #1
0
 function index(Request $request)
 {
     /////////////////
     // Load Filter //
     /////////////////
     $filters = $this->request->only('type', 'tag', 'skip', 'take', 'group', 'with_count');
     ///////////
     // Query //
     ///////////
     if (!$filters['take']) {
         $filters['take'] = 500;
     } else {
         $filters['take'] = min($filters['take'] * 1, 500);
     }
     $filters['skip'] = $filters['skip'] * 1;
     $q = Model::name($filters['name'])->type($filters['type']);
     if ($filters['group']) {
         $q = $q->groupby('tag');
     }
     if ($filters['with_count']) {
         $count = $q->count();
     }
     $data = $q->skip($filters['skip'])->take($filters['take'])->orderBy('tag')->select(['type', 'tag'])->get();
     //////////////
     // Response //
     //////////////
     return response()->json(JSend::success(['count' => $count, 'data' => $data->toArray()])->asArray())->setCallback($this->request->input('callback'));
 }
Exemple #2
0
 /**
  * store a resource 
  * @param  Request 	$request http request
  * @param  mixed  	$id      id of the resource for updating
  * @return jsend           	 jsend with newly stored source
  */
 function store(Request $request, $id = null)
 {
     ////////////////
     // Load Data  //
     ////////////////
     if ($id) {
         $data = Model::find($id);
         if (!$data) {
             return app()->abort(404);
         }
     } else {
         $data = new Model();
     }
     ///////////////////////////////////
     // Assign posted data to Data    //
     ///////////////////////////////////
     $data->fill($request->input());
     ///////////
     // Store //
     ///////////
     if ($data->save()) {
         return response()->json(JSend::success(['data' => $data])->asArray());
     } else {
         return response()->json(JSend::fail($data->getErrors())->asArray());
     }
 }
Exemple #3
0
 /**
  * [consolidate description]
  * @return [type] [description]
  */
 public function consolidate()
 {
     if (Model::consolidateTotalFlight()) {
         return response()->json(JSend::success()->asArray())->setCallback($this->request->input('callback'));
     } else {
         return app()->abort(500);
     }
 }
Exemple #4
0
 /**
  * store a resource 
  * @param  Request 	$request http request
  * @param  mixed  	$id      id of the resource for updating
  * @return jsend           	 jsend with newly stored source
  */
 function store(Request $request, $id = null)
 {
     ////////////////
     // Load Data  //
     ////////////////
     if ($id) {
         $data = Model::find($id);
         if (!$data) {
             return app()->abort(404);
         }
     } else {
         $data = new Model();
     }
     ///////////////////////////////////
     // Assign posted data to Data    //
     ///////////////////////////////////
     $data->fill($request->input());
     ///////////////////////////////////////////////////////////////////
     // 							Validate data 						 //
     ///////////////////////////////////////////////////////////////////
     # Validate Destinations
     $destination_id = null;
     if ($request->input('destination_id') && is_string($request->input('destination_id'))) {
         $destination = Destination::find($request->input('destination_id'));
         if ($destination) {
             $destination_id = $request->input('destination_id');
         } else {
             return response()->json(JSend::fail('InvalidDestination : Destination not found')->asArray());
         }
     } elseif (!is_string($request->input('destination_id'))) {
         return response()->json(JSend::fail('InvalidDestination : Invalid Destination format')->asArray());
     } else {
         return response()->json(JSend::fail('InvalidDestination : Destination is required')->asArray());
     }
     ///////////////////////////
     // Embeds Other Document //
     ///////////////////////////
     $data->images = $request->input('images');
     $data->tags = is_array($request->input('tags')) ? $request->input('tags') : [$request->input('tags')];
     $data->destination_id = $destination_id;
     ///////////
     // Store //
     ///////////
     if ($data->save()) {
         return response()->json(JSend::success(['data' => $data])->asArray());
     } else {
         return response()->json(JSend::fail($data->getErrors())->asArray());
     }
 }
Exemple #5
0
 function article_per_author()
 {
     ///////////
     // Query //
     ///////////
     $query[] = ['$match' => ['published_at' => ['$lte' => \Carbon\Carbon::now()->format('Y-m-d')]]];
     $query[] = ['$group' => ['_id' => '$user_id', 'last_created_at' => ['$first' => '$created_at'], 'last_published_at' => ['$first' => '$published_at'], 'count' => ['$sum' => 1]]];
     //////////////////////////////
     // 			Get Result 		//
     //////////////////////////////
     $data = [];
     $total_article = Article::raw(function ($collection) use($query) {
         return $collection->aggregate($query);
     });
     foreach ($total_article as $key => $value) {
         $new = User::find($value['_id']);
         if ($new) {
             $new['total_article'] = $value['count'];
             $new['last_created_at'] = $value['last_created_at'];
             $new['last_published_at'] = $value['last_published_at'];
             $data[] = $new->toArray();
         }
     }
     return response()->json(JSend::success(['count' => count($data), 'data' => $data])->asArray())->setCallback($this->request->input('callback'));
 }
Exemple #6
0
 /**
  * store a resource 
  * @param  Request 	$request http request
  * @param  mixed  	$id      id of the resource for updating
  * @return jsend           	 jsend with newly stored source
  */
 function store($id = null)
 {
     ////////////////
     // Load Data  //
     ////////////////
     if ($id) {
         $data = Model::find($id);
         if (!$data) {
             return app()->abort(404);
         }
     } else {
         $data = new Model();
     }
     ///////////////////////////////////
     // Assign posted data to Data    //
     ///////////////////////////////////
     $data->fill($this->request->input());
     $data->slug = Model::generateSlug($data->name, $data->_id);
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // REMOVE THIS AFTERWARD //
     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // $data->created_at = $this->request->input('created_at');
     ///////////////////////////////////////////////////////////////////
     // 							Validate data 						 //
     ///////////////////////////////////////////////////////////////////
     # Validate Travel Agent
     $travel_agent = TravelAgent::find($this->request->input('travel_agent_id'));
     if (!$travel_agent) {
         return response()->json(JSend::fail(['travel_agent_id' => ['Travel Agent is not recognized']])->asArray())->setCallback($this->request->input('callback'));
     }
     $data->travel_agent_id = $travel_agent->id;
     ///////////////////////
     // EMBED IMAGES 	 //
     ///////////////////////
     foreach ($this->request->input('images') as $x) {
         $images[] = new Image($x);
     }
     if (!$data->syncImages($images)) {
         return response()->json(JSend::fail($data->getErrors())->asArray())->setCallback($this->request->input('callback'));
     }
     ///////////////////////
     // EMBED TAGS	 	 //
     ///////////////////////
     foreach ($this->request->input('tags') as $x) {
         if ($x['tag'] && $x['type']) {
             $tags[] = new Tag($x);
         }
     }
     if (!$data->syncTags($tags)) {
         return response()->json(JSend::fail($data->getErrors())->asArray())->setCallback($this->request->input('callback'));
     }
     ////////////////////////
     // EMBED TourSchedule //
     ////////////////////////
     foreach ($this->request->input('schedules') as $x) {
         if ($x['_id']) {
             $tour_schedule = $data->schedules->where('_id', $x['_id'])->first();
             if (!$tour_schedule) {
                 return app()->abort(404);
             }
             $tour_schedule->fill($x);
         } else {
             $tour_schedule = new TourSchedule($x);
         }
         //////////////////////
         // Sync Promo 		//
         //////////////////////
         $promos = [];
         foreach ($x['promos'] as $promo_array) {
             if ($promo_array['_id']) {
                 $promo = $tour_schedule->promos->where('_id', $promo_array['_id']['$id'])->first();
                 if (!$promo) {
                     return app()->abort(404);
                 }
                 $promo->fill($promo_array);
                 $promos[] = $promo;
             } else {
                 $promos[] = new Promo($promo_array);
             }
         }
         if (!$tour_schedule->syncPromo($promos)) {
             return response()->json(JSend::fail($tour_schedule->getErrors())->asArray())->setCallback($this->request->input('callback'));
         }
         //////////////////////
         // Sync Voucher 	//
         //////////////////////
         $vouchers = [];
         foreach ($x['vouchers'] as $voucher_array) {
             if ($voucher_array['_id']) {
                 $voucher = $tour_schedule->vouchers->where('_id', $voucher_array['_id']['$id'])->first();
                 if (!$voucher) {
                     return App()->abort(404);
                 }
                 $voucher->fill($voucher_array);
                 $vouchers[] = $voucher;
             } else {
                 $vouchers[] = new Voucher($voucher_array);
             }
         }
         if (!$tour_schedule->syncVoucher($vouchers)) {
             return response()->json(JSend::fail($tour_schedule->getErrors())->asArray())->setCallback($this->request->input('callback'));
         }
         $tour_schedules[] = $tour_schedule;
     }
     if (!$data->syncTourSchedules($tour_schedules)) {
         return response()->json(JSend::fail($data->getErrors())->asArray())->setCallback($this->request->input('callback'));
     }
     ///////////////////////
     // EMBED PACKAGE  	 //
     ///////////////////////
     if (!$data->syncTourPackage(new TourPackage($this->request->input('package')))) {
         return response()->json(JSend::fail($data->getErrors())->asArray())->setCallback($this->request->input('callback'));
     }
     //////////////////
     // Check Top Up //
     //////////////////
     if ($data->ads) {
         $older_data = $data->getOriginal();
     }
     ///////////
     // Store //
     ///////////
     if ($data->save()) {
         $new_ads = $data->ads;
         if ($data->ads) {
             $ids_inc = [];
             foreach ($data->ads as $key => $value) {
                 //1. Check if new data
                 if (empty($value['ad_id'])) {
                     $new_ad = $data->ads[$key];
                     $new_ad['ad_id'] = uniqid();
                     $new_ads[$key] = $new_ad;
                     $attributes['name'] = 'Top Up';
                     $attributes['ads_id'] = $new_ad['ad_id'];
                     $attributes['transact_at'] = \Carbon\Carbon::now()->format('Y-m-d');
                     $attributes['travel_agent']['_id'] = $data->travel_agent['_id'];
                     $attributes['travel_agent']['name'] = $data->travel_agent['name'];
                     $attributes['credit']['started_at'] = $data->ads[$key]['started_at'];
                     $attributes['credit']['initial_credit'] = $data->ads[$key]['initial_credit'] * 1;
                     $attributes['credit']['daily_rate'] = $data->ads[$key]['daily_rate'] * 1;
                     $attributes['credit']['today_balance'] = $data->ads[$key]['today_balance'] * 1;
                     $attributes['credit']['credit_balance'] = $data->ads[$key]['credit_balance'] * 1;
                     $attributes['credit']['tags'] = $data->ads[$key]['tags'];
                     $attributes['tour']['_id'] = $data['_id'];
                     $attributes['tour']['name'] = $data['name'];
                     $attributes['tour']['tags'] = $data['tags']->toArray();
                     $top_up = new TopUpLog();
                     $top_up->fill($attributes);
                     if (!$top_up->save()) {
                         $error_responses = [];
                         foreach ($top_up->getErrors() as $field => $errors) {
                             $error_responses[$field] = implode(', ', $errors);
                         }
                         return response()->json(JSend::fail($top_up->getErrors())->asArray());
                     }
                 } elseif ($older_data['ads'][$key]['started_at'] != $data->ads[$key]->started_at || $older_data['ads'][$key]['initial_credit'] != $data->ads[$key]->initial_credit || $older_data['ads'][$key]['daily_rate'] != $data->ads[$key]->daily_rate || $older_data['ads'][$key]['today_balance'] != $data->ads[$key]->today_balance || $older_data['ads'][$key]['credit_balance'] != $data->ads[$key]->credit_balance) {
                     //emptied last balance
                     $last_balance = TopUpLog::where('ads_id', $older_data['ads'][$key]['ad_id'])->orderBy('created_at', 'desc')->first();
                     if ($last_balance && $last_balance['credit']['today_balance'] > 0) {
                         $attributes['name'] = 'Emptied Top Up';
                         $attributes['ads_id'] = $older_data['ads'][$key]['ad_id'];
                         $attributes['transact_at'] = \Carbon\Carbon::now()->format('Y-m-d');
                         $attributes['travel_agent']['_id'] = $data->travel_agent['_id'];
                         $attributes['travel_agent']['name'] = $data->travel_agent['name'];
                         $attributes['credit']['started_at'] = $older_data['ads'][$key]['started_at'];
                         $attributes['credit']['initial_credit'] = $older_data['ads'][$key]['initial_credit'] * 1;
                         $attributes['credit']['daily_rate'] = $older_data['ads'][$key]['daily_rate'] * 1;
                         $attributes['credit']['today_balance'] = 0 * 1;
                         $attributes['credit']['credit_balance'] = (0 - $older_data['ads'][$key]['today_balance']) * 1;
                         $attributes['credit']['tags'] = $older_data['ads'][$key]['tags'];
                         $attributes['tour']['_id'] = $older_data['_id'];
                         $attributes['tour']['name'] = $older_data['name'];
                         $attributes['tour']['tags'] = $older_data['tags'];
                         $top_up = new TopUpLog();
                         $top_up->fill($attributes);
                         if (!$top_up->save()) {
                             $error_responses = [];
                             foreach ($top_up->getErrors() as $field => $errors) {
                                 $error_responses[$field] = implode(', ', $errors);
                             }
                             return response()->json(JSend::fail($top_up->getErrors())->asArray());
                         }
                     }
                     //create new top up
                     $new_ad = $data->ads[$key];
                     $new_ads[$key] = $new_ad;
                     $attributes['name'] = 'Edited Top Up';
                     $attributes['ads_id'] = $new_ad['ad_id'];
                     $attributes['transact_at'] = \Carbon\Carbon::now()->format('Y-m-d');
                     $attributes['travel_agent']['_id'] = $data->travel_agent['_id'];
                     $attributes['travel_agent']['name'] = $data->travel_agent['name'];
                     $attributes['credit']['started_at'] = $data->ads[$key]['started_at'] * 1;
                     $attributes['credit']['initial_credit'] = $data->ads[$key]['initial_credit'] * 1;
                     $attributes['credit']['daily_rate'] = $data->ads[$key]['daily_rate'] * 1;
                     $attributes['credit']['today_balance'] = $data->ads[$key]['initial_credit'] * 1;
                     $attributes['credit']['credit_balance'] = $data->ads[$key]['initial_credit'] * 1;
                     $attributes['credit']['tags'] = $data->ads[$key]['tags'];
                     $attributes['tour']['_id'] = $data['_id'];
                     $attributes['tour']['name'] = $data['name'];
                     $attributes['tour']['tags'] = $data['tags']->toArray();
                     $top_up = new TopUpLog();
                     $top_up->fill($attributes);
                     if (!$top_up->save()) {
                         $error_responses = [];
                         foreach ($top_up->getErrors() as $field => $errors) {
                             $error_responses[$field] = implode(', ', $errors);
                         }
                         return response()->json(JSend::fail($top_up->getErrors())->asArray());
                     }
                 }
                 if ($new_ad['ad_id']) {
                     $ids_inc[] = $new_ad['ad_id'];
                 }
             }
             //3. Check if deleted data
             foreach ($older_data['ads'] as $key => $value) {
                 if (!in_array($value['ad_id'], $ids_inc)) {
                     $attributes['name'] = 'Deleted Top Up';
                     $attributes['ads_id'] = $older_data['ads'][$key]['ad_id'];
                     $attributes['transact_at'] = \Carbon\Carbon::now()->format('Y-m-d');
                     $attributes['travel_agent']['_id'] = $older_data['travel_agent']['_id'];
                     $attributes['travel_agent']['name'] = $older_data['travel_agent']['name'];
                     $attributes['credit']['started_at'] = $older_data['ads'][$key]['started_at'] * 1;
                     $attributes['credit']['initial_credit'] = $older_data['ads'][$key]['initial_credit'] * 1;
                     $attributes['credit']['daily_rate'] = $older_data['ads'][$key]['daily_rate'] * 1;
                     $attributes['credit']['today_balance'] = 0 * 1;
                     $attributes['credit']['credit_balance'] = (0 - $older_data['ads'][$key]['today_balance']) * 1;
                     $attributes['credit']['tags'] = $older_data['ads'][$key]['tags'];
                     $attributes['tour']['_id'] = $older_data['_id'];
                     $attributes['tour']['name'] = $older_data['name'];
                     $attributes['tour']['tags'] = $older_data['tags'];
                     $top_up = new TopUpLog();
                     $top_up->fill($attributes);
                     if (!$top_up->save()) {
                         $error_responses = [];
                         foreach ($top_up->getErrors() as $field => $errors) {
                             $error_responses[$field] = implode(', ', $errors);
                         }
                         return response()->json(JSend::fail($top_up->getErrors())->asArray());
                     }
                 }
             }
             $data->ads = $new_ads;
             if (!$data->save()) {
                 return response()->json(JSend::fail($data->getErrors())->asArray());
             }
         }
         return response()->json(JSend::success(['data' => $data])->asArray());
     } else {
         $error_responses = [];
         foreach ($data->getErrors() as $field => $errors) {
             $error_responses[$field] = implode(', ', $errors);
         }
         return response()->json(JSend::fail($data->getErrors())->asArray());
     }
 }
Exemple #7
0
 /**
  * store a resource 
  * @param  Request 	$request http request
  * @param  mixed  	$id      id of the resource for updating
  * @return jsend           	 jsend with newly stored source
  */
 function store(Request $request, $id = null)
 {
     ////////////////
     // Load Data  //
     ////////////////
     if ($id) {
         $data = Model::find($id);
         if (!$data) {
             return app()->abort(404);
         }
     } else {
         $data = new Model();
     }
     ///////////////////////////////////
     // Assign posted data to Data    //
     ///////////////////////////////////
     $data->fill($request->input());
     ///////////////////////////////////////////////////////////////////
     // 							Validate data 						 //
     ///////////////////////////////////////////////////////////////////
     # Validate User
     if ($request->input('user_id')) {
         if (!is_scalar($request->input('user_id'))) {
             return response()->json(JSend::fail(['user' => ['Invalid User']])->asArray());
         } else {
             $user = User::find($request->input('user_id'));
             if (!$user) {
                 return response()->json(JSend::fail(['user' => ['Invalid User']])->asArray());
             }
             $data->user_id = $request->input('user_id');
         }
     }
     ///////////////////////////
     // Embeds Other Document //
     ///////////////////////////
     ///////////////////////
     // EMBED IMAGES 	 //
     ///////////////////////
     foreach ($this->request->input('images') as $x) {
         $images[] = new Image($x);
     }
     if (!$data->syncImages($images)) {
         return response()->json(JSend::fail($data->getErrors())->asArray())->setCallback($this->request->input('callback'));
     }
     ///////////////////////
     // EMBED TAGS	 	 //
     ///////////////////////
     foreach ($this->request->input('tags') as $x) {
         $tags[] = new Tag($x);
     }
     if (!$data->syncTags($tags)) {
         return response()->json(JSend::fail($data->getErrors())->asArray())->setCallback($this->request->input('callback'));
     }
     ///////////
     // Store //
     ///////////
     if ($data->save()) {
         return response()->json(JSend::success(['data' => $data])->asArray());
     } else {
         return response()->json(JSend::fail($data->getErrors())->asArray());
     }
 }
Exemple #8
0
 /**
  * issue close session
  *
  * 1. validate grant type and validate required params based on grant types
  * 2. grant access token
  **/
 public function destroySession()
 {
     //1. validate grant type and validate required params based on grant types
     $is_grant_valid = new VoGT();
     if ($is_grant_valid->validate($this->request->input())) {
         //2. grant access token
         $is_accessed = call_user_func([$this->auth_server, $this->request->input('grant_type')], $this->request->input(), $_SERVER['REMOTE_ADDR']);
         if (!$is_accessed) {
             $this->errors->add('Access', $this->auth_server->getError());
         } else {
             return response()->json(JSend::success(['status' => 'closed'])->asArray());
         }
     } else {
         $this->errors->add('Access', $is_grant_valid->getError());
     }
     if ($this->errors->count()) {
         \Log::info(json_encode($this->getError()));
         return response()->json(JSend::error($this->request->input(), $this->getError())->asArray());
     }
 }
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function getDelete($id)
 {
     //
     $location = Location::find($id);
     if (!$location) {
         return response()->json(JSend::fail(['Data not found'])->encode());
     }
     if ($location->delete()) {
         return response()->json(JSend::success($location->toArray())->encode());
     } else {
         return response()->json(JSend::fail($location->getErrors()->toArray())->encode());
     }
 }
Exemple #10
0
 function validated_voucher()
 {
     ///////////////////
     // GET PARAMETER //
     ///////////////////
     $filters = $this->request->only('start_date', 'end_date', 'travel_agent_id', 'skip', 'take');
     $filters['take'] = min(max(1, $filters['take'] * 1), 50);
     $filters['skip'] = $filters['skip'] * 1;
     ///////////
     // Query //
     ///////////
     if ($filters['travel_agent_id']) {
         $query[][] = ['travel_agent_id' => $filters['travel_agent_id']];
     }
     ////////////////
     // Start Date //
     ////////////////
     if (!$filters['start_date']) {
         $start_date = new \MongoDate(\Carbon\Carbon::now()->subDays(30)->timestamp);
     } else {
         try {
             $start_date = new \MongoDate(\Carbon\Carbon::parse($filters['start_date'])->timestamp);
         } catch (\Exception $e) {
             return response()->json(JSend::fail(['start' => ['Invalid start_date parameter: invalid date']])->asArray())->setCallback($this->request->input('callback'));
         }
     }
     //////////////
     // End Date //
     //////////////
     if (!$filters['end_date']) {
         $end_date = new \MongoDate(\Carbon\Carbon::now()->timestamp);
     } else {
         try {
             $end_date = new \MongoDate(\Carbon\Carbon::parse($filters['end_date'])->timestamp);
         } catch (\Exception $e) {
             return response()->json(JSend::fail(['start' => ['Invalid end_date parameter: invalid date']])->asArray())->setCallback($this->request->input('callback'));
         }
     }
     //////////////////////////////
     // Compare Start & End Date //
     //////////////////////////////
     if ($start_date > $end_date) {
         $tmp = $start_date;
         $start_date = $end_date;
         $end_date = $tmp;
     }
     if ($start_date) {
         $query[] = ['$match' => ['validated_at' => ['$gte' => $start_date, '$lte' => $end_date]]];
     }
     //////////
     // SORT //
     //////////
     $query[] = ['$group' => ['_id' => ['year' => ['$year' => '$validated_at'], 'month' => ['$month' => '$validated_at'], 'day' => ['$dayOfMonth' => '$validated_at']], 'count' => ['$sum' => 1]]];
     $vouchers = IssuedVoucher::raw(function ($collection) use($query) {
         return $collection->aggregate($query);
     });
     if ($vouchers['ok']) {
         return response()->json(JSend::success(['data' => $vouchers['result']])->asArray())->setCallback($this->request->input('callback'));
     } else {
         return response()->json(JSend::fail(['InvalidCalculation' => 'Invalid Calculation'])->asArray())->setCallback($this->request->input('callback'));
     }
 }
Exemple #11
0
 function tour_compare_remove()
 {
     $id = request()->input('id');
     if ($id) {
         $comparison = session()->get('tour_comparison');
         if ($comparison instanceof Collection) {
             $except_removed_comparison = $comparison->filter(function ($item) use($id) {
                 return !str_is($id, $item->_id);
             });
             session()->put('tour_comparison', $except_removed_comparison);
         }
         return response()->json(JSend::success($except_removed_comparison->toArray())->asArray());
     } else {
         return app()->abort(400);
     }
 }
Exemple #12
0
 function issued()
 {
     /////////////////
     // Load Filter //
     /////////////////
     $filters = $this->request->only('code', 'status', 'skip', 'take', 'sort', 'with_count');
     $filters['skip'] = max((int) $filters['skip'], 0);
     $filters['take'] = min((int) $filters['take'], 100);
     ///////////
     // Query //
     ///////////
     $q = new IssuedVoucher();
     if ($filters['code']) {
         $q = $q->code($filters['code']);
     }
     switch (strtolower($filters['status'])) {
         case 'validated':
             $q = $q->validated();
             break;
         case 'unvalidated':
             $q = $q->unvalidated();
             break;
         default:
             # code...
             break;
     }
     if ($filters['with_count']) {
         $count = $q->count();
     }
     switch (strtolower($filters['sort'])) {
         case 'latest-validated':
             $q = $q->latest('validated_at');
             break;
         default:
             $q = $q->latest('created_at');
             # code...
             break;
     }
     $data = $q->with('tour', 'tour.travel_agent', 'user')->skip($filters['skip'])->take($filters['take'])->get();
     //////////////
     // Response //
     //////////////
     return response()->json(JSend::success(['count' => $count, 'data' => $data])->asArray())->setCallback($this->request->input('callback'));
 }
Exemple #13
0
 /**
  * delete
  * @param  Request $this->request [description]
  * @param  [type]  $id      [description]
  * @return [type]           [description]
  */
 public function destroy($id = null)
 {
     ////////////////
     // Load Data  //
     ////////////////
     if ($id) {
         $data = Model::find($id);
         if (!$data) {
             return app()->abort(404);
         }
     } else {
         $data = new Model();
     }
     ///////////
     // Store //
     ///////////
     if ($data->delete()) {
         return response()->json(JSend::success(['data' => $data])->asArray());
     } else {
         return response()->json(JSend::fail($data->getErrors())->asArray());
     }
 }
Exemple #14
0
 function unsubscribe()
 {
     ///////////////
     // GET Email //
     ///////////////
     $email = $this->request->input('email');
     $unsubscription_token = $this->request->input('token');
     ////////////////////////
     // Check In Database  //
     ////////////////////////
     $data = Model::email($email)->first();
     if (!$data) {
         return App::abort(404);
     }
     //////////////////
     // Unsubscribe  //
     //////////////////
     if (str_is($data->unsubscription_token, $unsubscription_token)) {
         $data->is_subscribe = false;
         $data->save();
         return response()->json(JSend::success(['count' => $count, 'data' => $data->toArray()])->asArray())->setCallback($this->request->input('callback'));
     } else {
         return response()->json(JSend::fail(['email' => ['Invalid Token, fail to unsubscribe']]))->setCallback($this->request->input('callback'));
     }
 }
Exemple #15
0
 function homepage_projection()
 {
     $projections = [];
     $query[] = ['$match' => ['ads.today_balance' => ['$gt' => 0]]];
     ///////////
     // Query //
     ///////////
     $data = Tour::with('travel_agent')->raw(function ($collection) use($query) {
         return $collection->aggregate($query);
     });
     //////////////////////////////
     // 			Get Result 		//
     //////////////////////////////
     foreach ($data as $key2 => $value2) {
         foreach ($value2->ads as $key3 => $value3) {
             $last_balance = $value3['today_balance'];
             $daily_rate = $value3['daily_rate'];
             $initial_credit = $value3['initial_credit'];
             while ($last_balance > 0) {
                 $started = \Carbon\Carbon::parse($value2['started_at']);
                 $days = $started->addDays(($initial_credit - $last_balance) / $daily_rate);
                 $projection['on'] = $days->format('Y-m-d');
                 $projection['balance'] = $last_balance;
                 $projection['tour'] = ['_id' => $value2['_id'], 'name' => $value2['name']];
                 $projection['travel_agent'] = ['_id' => $value2['travel_agent']['_id'], 'name' => $value2['travel_agent']['name']];
                 $last_balance = $last_balance - $daily_rate;
                 $projections[] = $projection;
             }
         }
     }
     return response()->json(JSend::success(['count' => count($data), 'data' => $projections])->asArray())->setCallback($this->request->input('callback'));
 }
Exemple #16
0
 /**
  * sign in
  * @param  Request 	$this->request http request
  * @return jsend           	 jsend with logged in user
  */
 function authenticate()
 {
     ///////////////////
     // Check request //
     ///////////////////
     if (!$this->request->has('email') || !$this->request->has('password') || !$this->request->has('auth')) {
         return response()->json(JSend::fail('Unauthorized Access')->asArray());
     }
     ////////////////
     // Find email //
     ////////////////
     $user = Model::email($this->request->input('email'))->first();
     if (!$user) {
         return response()->json(JSend::fail('Unauthorized Access')->asArray());
     } else {
         ///////////////////////
         // Validate password //
         ///////////////////////
         if (!Hash::check($this->request->input('password'), $user->password)) {
             return response()->json(JSend::fail('Unauthorized Access')->asArray());
         } else {
             $required_auth = $this->request->input('auth');
             foreach ($user->auth->{$required_auth} as $auth_type => $is_auth) {
                 if ($is_auth) {
                     return response()->json(JSend::success(['data' => $user->toArray()])->asArray());
                 }
             }
             return response()->json(JSend::fail('Unauthorized Access')->asArray());
         }
     }
 }