Advertisement
Guest User

envtool

a guest
Jan 21st, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.83 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Library;
  4. use Exception;
  5. use Carbon\Carbon;
  6. use Illuminate\Support\Collection;
  7. use Illuminate\Support\Facades\DB;
  8.  
  9. class EnvTool {
  10.  
  11.     public $successStatus = 200;
  12.     public $BadRequest = 400;
  13.     public $NotFound = 404;
  14.     public $MethodNotSupported = 405;
  15.     public $success = "success";
  16.     public $error = "error";
  17.     public $warning = "warning";
  18.     public $itemNotFound = "Item not found";
  19.     public $notLoadedItems = "Items aren't loaded properly";
  20.     public $_api_context = "";
  21.  
  22.     public function parseDate($date){
  23.         #Fri 17 Jan , 2020 fecha= date('D F j, Y \a\t\ g:i a');
  24.        try{
  25.             return Carbon::parse($date)->format('D d M , Y');
  26.         }catch (\Exception $e) {
  27.             abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
  28.         }
  29.     }
  30.  
  31.     public function validateDetails($vendor,$rate,$details){
  32.         $ratesInVendor = \App\Rate::whereId($rate)->whereVendorId($vendor)->get();
  33.         if (!$ratesInVendor->isEmpty()) {
  34.             $details->each(function ($detail) {
  35.                 $options = array_map(function ($option) use ($detail){
  36.                     if (!\App\Optionable::whereOptionableId($detail['item_id'])->whereOptionDetailId($option["option_detail"]['id'])->get()->isEmpty()) {
  37.                         return $option;
  38.                     }
  39.                     $item_name = \App\Item::whereId($detail['item_id'])->value('name');
  40.                     $option_name = \App\Option::whereCode($option['code'])->value('name');
  41.                     $option_detail = $option['option_detail']['name'];
  42.                     abort(response()->json([$this->error=>'Item: '.$item_name.' has no '.$option_name.' '.$option_detail.' option enabled'], $this->NotFound));
  43.                 },$detail['options']);
  44.                 return $options;
  45.             });
  46.             return $details;
  47.         }
  48.         abort(response()->json([$this->error=>'Rate Vendor missmatch'], $this->NotFound));
  49.     }
  50.  
  51.     public static function getOptionLabel($string, $id = null ,$price = null){
  52.         try {
  53.             $option = new Collection(\App\Option::whereCode(preg_replace('/[0-9]/','',$string))->get('code')[0]);
  54.             is_null($id)?:$option['rate_detail_id']= $id;
  55.             is_null($price)?:$option['price']= $price;
  56.             $detail = \App\OptionDetail::whereId(preg_replace('/[a-zA-Z]/','',$string))->get(['id','name'])[0];
  57.             $option->put('option_detail',$detail);
  58.             return $option;
  59.         } catch (\Exception $e) {
  60.             return $e->getMessage();
  61.         }
  62.     }
  63.  
  64.     public function getRateList($vendor_id){
  65.         try {
  66.             $vendor = \App\Vendor::findOrFail($vendor_id);
  67.             $rateList = \App\Rate::whereVendorId($vendor_id)->get()->map(function ($rate) {
  68.                 $rateObj['id'] = $rate->id;
  69.                 $rateObj['name'] = $rate->rate_list->name;
  70.                 return $rateObj;
  71.             });
  72.             if (!$rateList->isEmpty()) {
  73.                 return $rateList;
  74.             }else{
  75.                 abort($this->NotFound, $this->error.": Vendor id:$vendor_id haven't active or available rate lists");
  76.             }
  77.         } catch (\Exception $e) {
  78.             abort(response()->json([$this->error=>'Vendor id:'.$vendor_id.' not found.'], $this->NotFound));
  79.         }
  80.     }
  81.  
  82.     public function getItemList($data){
  83.         $baseRateId = $this->getRateList($data['vendor_id'])->where('name','Precios Base')->first()['id'];
  84.         $itemList = \App\RateDetail::whereRateId($baseRateId)->groupBy('item_id')->get('item_id')->map(function ($item,$key) use ($data, $baseRateId) {
  85.             try
  86.             {
  87.                 $itemObj = \App\Item::findOrFail($item->item_id);
  88.             } catch (\Exception $e) {
  89.                 abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
  90.             }
  91.             if (!$itemObj->status) {
  92.                 return ['id' =>'Disabled','key' =>$key];
  93.             }
  94.                
  95.             if (array_key_exists('rate_id', $data)){
  96.                 try {
  97.                     \App\Rate::whereVendorId($data['vendor_id'])->whereId($data['rate_id'])->firstOrFail();
  98.                 } catch (\Exception $e) {
  99.                     abort(response()->json([$this->error=>'The rate list id:'.$data['rate_id'].' does not belong to the vendor id:'.$data['vendor_id']], $this->NotFound));
  100.                 }
  101.                 $ratesIds = \App\RateDetail::whereRateId($data['rate_id'])->groupBy('item_id')->get('item_id');
  102.                 if ($ratesIds->contains('item_id',$item->item_id)) {
  103.                     $rate_id = (int)$data['rate_id'];
  104.                 }
  105.                 else{
  106.                     $rate_id = $baseRateId;
  107.                 }
  108.             }else{
  109.                 $rate_id = $baseRateId;
  110.             }        
  111.             $item['rate_id'] = $rate_id;
  112.  
  113.             $optionables = \App\Optionable::whereOptionableId($item->item_id)->get();
  114.  
  115.             // if ($item->item_id = 27) {
  116.                
  117.                 // echo json_encode($optionables);die;
  118.             if ($optionables->isEmpty()){
  119.                     // echo json_encode('test');die;
  120.                
  121.                 $optionableObj = new Collection();
  122.                 $optionableObj->put('code',null);
  123.                 try{
  124.                     $price = \App\RateDetail::whereRateId($item->rate_id)->whereItemId($item->item_id)->whereOption(null)->value('public_price');
  125.                     $optionableObj->put('price',$price);
  126.  
  127.  
  128.  
  129.  
  130.                 }catch (\Exception $e) {
  131.                     abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
  132.                 }
  133.                 // echo json_encode($optionableObj);
  134.             }else{
  135.                 $optionableObj = \App\Option::whereCode($optionables->first()->value('option_code'))->first();
  136.                 $optionDetails = $optionables->map(function ($optionable) use ($item){
  137.                     try {
  138.                         $detailObj = \App\OptionDetail::findOrFail($optionable->option_detail_id);
  139.                         try{
  140.                         // echo json_encode(['item: '=>$item->item_id,'rate: '=>$item->rate_id,'code'=>$optionable->option_code.$optionable->option_detail_id]);echo " \n";
  141.  
  142.                         $price = \App\RateDetail::whereRateId($item->rate_id)->whereItemId($item->item_id)->whereOption($optionable->option_code.$optionable->option_detail_id)->firstOrFail()->value('public_price');
  143.                         $detailObj['price'] = $price;
  144.                         // echo json_encode(\App\RateDetail::whereRateId($item->rate_id)->whereItemId($item->item_id)->whereOption($optionable->option_code.$optionable->option_detail_id)->toSql());die;
  145.                         }catch (\ModelNotFoundException $e) {
  146.  
  147.                             abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
  148.                         }
  149.                     } catch (\Exception $e) {
  150.                         $message = $e->getMessage()." Params, item: $item->item_id, rate: $item->rate_id";
  151.                         abort(response()->json([$this->error=>$message], $this->NotFound));
  152.                     }
  153.                     return $detailObj;
  154.                 });
  155.                 $optionableObj['option_details']=$optionDetails;
  156.             }#termina elsee
  157.            // }#if de item en especifico
  158.            
  159.             $itemObj['optionables']= $optionableObj;
  160.             // $itemObj['rate_id'] = $rate_id;
  161.  
  162.             return $itemObj;
  163.         });
  164.         $itemList->forget($itemList->where('id','Disabled')->pluck('key')->toArray());
  165.         return $itemList;
  166.     }
  167.  
  168.  
  169.     public function validateOption($option){
  170.         echo json_encode($option);die;
  171.         $val = \App\Optionable::whereOptionableId($option['item_id'])->get();
  172.  
  173.     }
  174.  
  175.  
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement