Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Library;
- use Exception;
- use Carbon\Carbon;
- use Illuminate\Support\Collection;
- use Illuminate\Support\Facades\DB;
- class EnvTool {
- public $successStatus = 200;
- public $BadRequest = 400;
- public $NotFound = 404;
- public $MethodNotSupported = 405;
- public $success = "success";
- public $error = "error";
- public $warning = "warning";
- public $itemNotFound = "Item not found";
- public $notLoadedItems = "Items aren't loaded properly";
- public $_api_context = "";
- public function parseDate($date){
- #Fri 17 Jan , 2020 fecha= date('D F j, Y \a\t\ g:i a');
- try{
- return Carbon::parse($date)->format('D d M , Y');
- }catch (\Exception $e) {
- abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
- }
- }
- public function validateDetails($vendor,$rate,$details){
- $ratesInVendor = \App\Rate::whereId($rate)->whereVendorId($vendor)->get();
- if (!$ratesInVendor->isEmpty()) {
- $details->each(function ($detail) {
- $options = array_map(function ($option) use ($detail){
- if (!\App\Optionable::whereOptionableId($detail['item_id'])->whereOptionDetailId($option["option_detail"]['id'])->get()->isEmpty()) {
- return $option;
- }
- $item_name = \App\Item::whereId($detail['item_id'])->value('name');
- $option_name = \App\Option::whereCode($option['code'])->value('name');
- $option_detail = $option['option_detail']['name'];
- abort(response()->json([$this->error=>'Item: '.$item_name.' has no '.$option_name.' '.$option_detail.' option enabled'], $this->NotFound));
- },$detail['options']);
- return $options;
- });
- return $details;
- }
- abort(response()->json([$this->error=>'Rate Vendor missmatch'], $this->NotFound));
- }
- public static function getOptionLabel($string, $id = null ,$price = null){
- try {
- $option = new Collection(\App\Option::whereCode(preg_replace('/[0-9]/','',$string))->get('code')[0]);
- is_null($id)?:$option['rate_detail_id']= $id;
- is_null($price)?:$option['price']= $price;
- $detail = \App\OptionDetail::whereId(preg_replace('/[a-zA-Z]/','',$string))->get(['id','name'])[0];
- $option->put('option_detail',$detail);
- return $option;
- } catch (\Exception $e) {
- return $e->getMessage();
- }
- }
- public function getRateList($vendor_id){
- try {
- $vendor = \App\Vendor::findOrFail($vendor_id);
- $rateList = \App\Rate::whereVendorId($vendor_id)->get()->map(function ($rate) {
- $rateObj['id'] = $rate->id;
- $rateObj['name'] = $rate->rate_list->name;
- return $rateObj;
- });
- if (!$rateList->isEmpty()) {
- return $rateList;
- }else{
- abort($this->NotFound, $this->error.": Vendor id:$vendor_id haven't active or available rate lists");
- }
- } catch (\Exception $e) {
- abort(response()->json([$this->error=>'Vendor id:'.$vendor_id.' not found.'], $this->NotFound));
- }
- }
- public function getItemList($data){
- $baseRateId = $this->getRateList($data['vendor_id'])->where('name','Precios Base')->first()['id'];
- $itemList = \App\RateDetail::whereRateId($baseRateId)->groupBy('item_id')->get('item_id')->map(function ($item,$key) use ($data, $baseRateId) {
- try
- {
- $itemObj = \App\Item::findOrFail($item->item_id);
- } catch (\Exception $e) {
- abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
- }
- if (!$itemObj->status) {
- return ['id' =>'Disabled','key' =>$key];
- }
- if (array_key_exists('rate_id', $data)){
- try {
- \App\Rate::whereVendorId($data['vendor_id'])->whereId($data['rate_id'])->firstOrFail();
- } catch (\Exception $e) {
- abort(response()->json([$this->error=>'The rate list id:'.$data['rate_id'].' does not belong to the vendor id:'.$data['vendor_id']], $this->NotFound));
- }
- $ratesIds = \App\RateDetail::whereRateId($data['rate_id'])->groupBy('item_id')->get('item_id');
- if ($ratesIds->contains('item_id',$item->item_id)) {
- $rate_id = (int)$data['rate_id'];
- }
- else{
- $rate_id = $baseRateId;
- }
- }else{
- $rate_id = $baseRateId;
- }
- $item['rate_id'] = $rate_id;
- $optionables = \App\Optionable::whereOptionableId($item->item_id)->get();
- // if ($item->item_id = 27) {
- // echo json_encode($optionables);die;
- if ($optionables->isEmpty()){
- // echo json_encode('test');die;
- $optionableObj = new Collection();
- $optionableObj->put('code',null);
- try{
- $price = \App\RateDetail::whereRateId($item->rate_id)->whereItemId($item->item_id)->whereOption(null)->value('public_price');
- $optionableObj->put('price',$price);
- }catch (\Exception $e) {
- abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
- }
- // echo json_encode($optionableObj);
- }else{
- $optionableObj = \App\Option::whereCode($optionables->first()->value('option_code'))->first();
- $optionDetails = $optionables->map(function ($optionable) use ($item){
- try {
- $detailObj = \App\OptionDetail::findOrFail($optionable->option_detail_id);
- try{
- // echo json_encode(['item: '=>$item->item_id,'rate: '=>$item->rate_id,'code'=>$optionable->option_code.$optionable->option_detail_id]);echo " \n";
- $price = \App\RateDetail::whereRateId($item->rate_id)->whereItemId($item->item_id)->whereOption($optionable->option_code.$optionable->option_detail_id)->firstOrFail()->value('public_price');
- $detailObj['price'] = $price;
- // echo json_encode(\App\RateDetail::whereRateId($item->rate_id)->whereItemId($item->item_id)->whereOption($optionable->option_code.$optionable->option_detail_id)->toSql());die;
- }catch (\ModelNotFoundException $e) {
- abort(response()->json([$this->error=>$e->getMessage()], $this->NotFound));
- }
- } catch (\Exception $e) {
- $message = $e->getMessage()." Params, item: $item->item_id, rate: $item->rate_id";
- abort(response()->json([$this->error=>$message], $this->NotFound));
- }
- return $detailObj;
- });
- $optionableObj['option_details']=$optionDetails;
- }#termina elsee
- // }#if de item en especifico
- $itemObj['optionables']= $optionableObj;
- // $itemObj['rate_id'] = $rate_id;
- return $itemObj;
- });
- $itemList->forget($itemList->where('id','Disabled')->pluck('key')->toArray());
- return $itemList;
- }
- public function validateOption($option){
- echo json_encode($option);die;
- $val = \App\Optionable::whereOptionableId($option['item_id'])->get();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement