public function edit_advertiser(Request $request)
 {
     //        return dd($request->all());
     if (Auth::check()) {
         if (in_array('ADD_EDIT_ADVERTISER', $this->permission)) {
             $validate = \Validator::make($request->all(), Advertiser::$rule);
             if ($validate->passes()) {
                 $adver_id = $request->input('advertiser_id');
                 if (User::isSuperAdmin()) {
                     $adver = Advertiser::find($adver_id);
                 } else {
                     $usr_company = $this->user_company();
                     $adver = Advertiser::whereHas('GetClientID', function ($p) use($usr_company) {
                         $p->whereIn('user_id', $usr_company);
                     })->find($adver_id);
                 }
                 if ($adver) {
                     $active = 'Inactive';
                     if ($request->input('active') == 'on') {
                         $active = 'Active';
                     }
                     $data = array();
                     $audit = new AuditsController();
                     $audit_key = $audit->generateRandomString();
                     if ($adver->name != $request->input('name')) {
                         array_push($data, 'Name');
                         array_push($data, $adver->name);
                         array_push($data, $request->input('name'));
                         $adver->name = $request->input('name');
                     }
                     if ($adver->status != $active) {
                         array_push($data, 'Status');
                         array_push($data, $adver->status);
                         array_push($data, $active);
                         $adver->status = $active;
                     }
                     if ($adver->domain_name != $request->input('domain_name')) {
                         array_push($data, 'Domain Name');
                         array_push($data, $adver->domain_name);
                         array_push($data, $request->input('domain_name'));
                         $adver->domain_name = $request->input('domain_name');
                     }
                     if ($adver->description != $request->input('description')) {
                         array_push($data, 'Description');
                         array_push($data, $adver->description);
                         array_push($data, $request->input('description'));
                         $adver->description = $request->input('description');
                     }
                     $adver_model_map = Advertiser_Model_Map::where('advertiser_id', $adver_id)->get();
                     $adverModelArr = array();
                     foreach ($adver_model_map as $index) {
                         array_push($adverModelArr, $index->model_id);
                     }
                     if ($request->has('to_model')) {
                         foreach ($request->input('to_model') as $index) {
                             if (!in_array($index, $adverModelArr)) {
                                 $model_assign = new Advertiser_Model_Map();
                                 $model_assign->advertiser_id = $adver_id;
                                 $model_assign->model_id = $index;
                                 $model_assign->save();
                                 $audit->store('advertiser_model_map', $index, $adver_id, 'add', $audit_key);
                             }
                         }
                     }
                     foreach ($adver_model_map as $index) {
                         if ($request->has('to_model') and !in_array($index->pixel_id, $request->input('to_model'))) {
                             Advertiser_Model_Map::where('advertiser_id', $adver_id)->where('model_id', $index->model_id)->delete();
                             $audit->store('advertiser_model_map', $index->model_id, $adver_id, 'remove', $audit_key);
                         } elseif (!$request->has('to_model')) {
                             Advertiser_Model_Map::where('advertiser_id', $adver_id)->where('model_id', $index->model_id)->delete();
                             $audit->store('advertiser_model_map', $index->model_id, $adver_id, 'remove', $audit_key);
                         }
                     }
                     $audit->store('advertiser', $adver_id, $data, 'edit');
                     $adver->save();
                     return Redirect::back()->withErrors(['success' => true, 'msg' => 'Advertiser Edited Successfully']);
                 }
                 return Redirect::back()->withErrors(['success' => false, 'msg' => 'please Select your Client'])->withInput();
             }
             return Redirect::back()->withErrors(['success' => false, 'msg' => $validate->messages()->all()])->withInput();
         }
         return Redirect::back()->withErrors(['success' => false, 'msg' => "You don't have permission"]);
     }
     return Redirect::to(url('user/login'));
 }
 public function creative_bulk(Request $request)
 {
     //        return dd($request->all());
     if (Auth::check()) {
         if (in_array('ADD_EDIT_CREATIVE', $this->permission)) {
             $validate = $this->validation($request);
             if ($validate->passes()) {
                 $usr_company = $this->user_company();
                 $audit = new AuditsController();
                 $audit_key = $audit->generateRandomString();
                 if ($request->input('advertiser_id') == 'all' and !$request->has('creative_list')) {
                     if ($request->input('client_id') == 'all') {
                         if (User::isSuperAdmin()) {
                             $creative_list = Creative::get(['id'])->toArray();
                         } else {
                             $creative_list = Creative::whereHas('getAdvertiser', function ($q) use($usr_company) {
                                 $q->whereHas('GetClientID', function ($p) use($usr_company) {
                                     $p->whereIn('user_id', $usr_company);
                                 });
                             })->get(['id'])->toArray();
                         }
                     } elseif ($request->input('client_id') != 'all') {
                         if (User::isSuperAdmin()) {
                             $creative_list = Creative::whereHas('getAdvertiser', function ($q) use($request) {
                                 $q->where('client_id', $request->input('client_id'));
                             })->get(['id'])->toArray();
                         } else {
                             ////////////////////////
                             $creative_list = Creative::whereHas('getAdvertiser', function ($q) use($usr_company, $request) {
                                 $q->whereHas('GetClientID', function ($p) use($usr_company, $request) {
                                     $p->where('id', $request->input('client_id'))->whereIn('user_id', $usr_company);
                                 });
                             })->get(['id'])->toArray();
                         }
                     }
                 } elseif ($request->input('advertiser_id') != 'all' and !$request->has('creative_list')) {
                     if (User::isSuperAdmin()) {
                         $creative_list = Creative::whereHas('getAdvertiser', function ($q) use($request) {
                             $q->where('id', $request->input('advertiser_id'));
                         })->get(['id'])->toArray();
                     } else {
                         ////////////////////////
                         $creative_list = Creative::whereHas('getAdvertiser', function ($q) use($usr_company, $request) {
                             $q->where('id', $request->input('advertiser_id'))->whereHas('GetClientID', function ($p) use($usr_company, $request) {
                                 $p->whereIn('user_id', $usr_company);
                             });
                         })->get(['id'])->toArray();
                     }
                 } else {
                     $creative_list = explode(',', $request->input('creative_list'));
                 }
                 if (count($creative_list) > 0) {
                     foreach ($creative_list as $index) {
                         $data = array();
                         if (!$request->has('creative_list')) {
                             $creative_id = $index['id'];
                             $creative = Creative::find($creative_id);
                         } else {
                             $creative_id = $index;
                             if (User::isSuperAdmin()) {
                                 $creative = Creative::find($creative_id);
                             } else {
                                 $usr_company = $this->user_company();
                                 $creative = Creative::whereHas('getAdvertiser', function ($q) use($usr_company) {
                                     $q->whereHas('GetClientID', function ($p) use($usr_company) {
                                         $p->whereIn('user_id', $usr_company);
                                     });
                                 })->find($creative_id);
                             }
                         }
                         if ($creative) {
                             if ($request->has('size_width') and $request->has('size_height')) {
                                 $size = $request->input('size_width') . 'x' . $request->input('size_height');
                             }
                             if ($request->input('name')) {
                                 array_push($data, 'Name');
                                 array_push($data, $request->input('name'));
                                 $creative->name = $request->input('name');
                             }
                             if ($request->has('active')) {
                                 $active = 'Inactive';
                                 if ($request->input('active') == 'on') {
                                     $active = 'Active';
                                 }
                                 array_push($data, 'Status');
                                 array_push($data, $active);
                                 $creative->status = $active;
                             }
                             if ($request->input('ad_type')) {
                                 array_push($data, 'Ad Type');
                                 array_push($data, $request->input('ad_type'));
                                 $creative->ad_type = $request->input('ad_type');
                             }
                             if ($request->has('api')) {
                                 array_push($data, 'API');
                                 array_push($data, json_encode($request->input('api')));
                                 $creative->api = json_encode($request->input('api'));
                             }
                             if ($request->input('advertiser_domain_name')) {
                                 array_push($data, 'Domain Name');
                                 array_push($data, $request->input('advertiser_domain_name'));
                                 $creative->advertiser_domain_name = $request->input('advertiser_domain_name');
                             }
                             if ($request->input('description')) {
                                 array_push($data, 'Description');
                                 array_push($data, $request->input('description'));
                                 $creative->description = $request->input('description');
                             }
                             if ($request->input('landing_page_url')) {
                                 array_push($data, 'Landing Page URL');
                                 array_push($data, $request->input('landing_page_url'));
                                 $creative->landing_page_url = $request->input('landing_page_url');
                             }
                             if ($request->input('preview_url')) {
                                 array_push($data, 'Preview URL');
                                 array_push($data, $request->input('preview_url'));
                                 $creative->preview_url = $request->input('preview_url');
                             }
                             if ($request->input('attributes')) {
                                 array_push($data, 'Attributes');
                                 array_push($data, $request->input('attributes'));
                                 $creative->attributes = $request->input('attributes');
                             }
                             if ($request->input('ad_tag')) {
                                 array_push($data, 'AD Tag');
                                 array_push($data, $request->input('ad_tag'));
                                 $creative->ad_tag = $request->input('ad_tag');
                             }
                             if (isset($size)) {
                                 array_push($data, 'Size');
                                 array_push($data, $size);
                                 $creative->size = $size;
                             }
                             $audit->store('creative', $creative_id, $data, 'bulk_edit', $audit_key);
                             $creative->save();
                         }
                     }
                     return Redirect::back()->withErrors(['success' => true, 'msg' => 'Creatives Edited Successfully']);
                 }
             }
             return Redirect::back()->withErrors(['success' => false, 'msg' => $validate->messages()->all()])->withInput();
         }
         return Redirect::back()->withErrors(['success' => false, 'msg' => 'dont have Edit Permission']);
     }
     return Redirect::to(url('/user/login'));
 }
 public function edit_offer(Request $request)
 {
     if (Auth::check()) {
         if (in_array('ADD_EDIT_OFFER', $this->permission)) {
             $validate = \Validator::make($request->all(), ['name' => 'required']);
             if ($validate->passes()) {
                 $offer_id = $request->input('offer_id');
                 if (User::isSuperAdmin()) {
                     $offer = Offer::find($offer_id);
                 } else {
                     $usr_company = $this->user_company();
                     $offer = Offer::whereHas('getAdvertiser', function ($q) use($usr_company) {
                         $q->whereHas('GetClientID', function ($p) use($usr_company) {
                             $p->whereIn('user_id', $usr_company);
                         });
                     })->find($offer_id);
                 }
                 if ($offer) {
                     $key_audit = new AuditsController();
                     $key_audit = $key_audit->generateRandomString();
                     $active = 'Inactive';
                     if ($request->input('active') == 'on') {
                         $active = 'Active';
                     }
                     $data = array();
                     $audit = new AuditsController();
                     $audit_key = $audit->generateRandomString();
                     if ($offer->name != $request->input('name')) {
                         array_push($data, 'Name');
                         array_push($data, $offer->name);
                         array_push($data, $request->input('name'));
                         $offer->name = $request->input('name');
                     }
                     if ($offer->description != $request->input('description')) {
                         array_push($data, 'Description');
                         array_push($data, $offer->description);
                         array_push($data, $request->input('description'));
                         $offer->description = $request->input('description');
                     }
                     if ($offer->status != $active) {
                         array_push($data, 'Status');
                         array_push($data, $offer->status);
                         array_push($data, $active);
                         $offer->status = $active;
                     }
                     $offer_pixel_map = Offer_Pixel_Map::where('offer_id', $offer_id)->get();
                     $ofrPxlArr = array();
                     foreach ($offer_pixel_map as $index) {
                         array_push($ofrPxlArr, $index->pixel_id);
                     }
                     if ($request->has('to_pixel')) {
                         foreach ($request->input('to_pixel') as $index) {
                             if (!in_array($index, $ofrPxlArr)) {
                                 $pixel_assign = new Offer_Pixel_Map();
                                 $pixel_assign->offer_id = $offer_id;
                                 $pixel_assign->pixel_id = $index;
                                 $pixel_assign->save();
                                 $audit->store('offer_pixel_map', $index, $offer_id, 'add', $audit_key);
                             }
                         }
                         foreach ($offer_pixel_map as $index) {
                             if (!in_array($index->pixel_id, $request->input('to_pixel'))) {
                                 Offer_Pixel_Map::where('offer_id', $offer_id)->where('pixel_id', $index->pixel_id)->delete();
                                 $audit->store('offer_pixel_map', $index->pixel_id, $offer_id, 'remove', $audit_key);
                             }
                         }
                     } else {
                         foreach ($offer_pixel_map as $index) {
                             Offer_Pixel_Map::where('offer_id', $offer_id)->where('pixel_id', $index->pixel_id)->delete();
                             $audit->store('offer_pixel_map', $index->pixel_id, $offer_id, 'remove', $audit_key);
                         }
                     }
                     $audit->store('offer', $offer_id, $data, 'edit');
                     $offer->save();
                     return Redirect::back()->withErrors(['success' => true, 'msg' => 'Offer Edited Successfully']);
                 }
                 return Redirect::back()->withErrors(['success' => false, 'msg' => 'please Select your Client'])->withInput();
             }
             return Redirect::back()->withErrors(['success' => false, 'msg' => $validate->messages()->all()])->withInput();
         }
         return Redirect::back()->withErrors(['success' => false, 'msg' => 'dont have Edit Permission']);
     }
     return Redirect::to(url('/user/login'));
 }
 public function edit_model(Request $request)
 {
     //        $start_date = \DateTime::createFromFormat('d.m.Y', $request->input('start_date'));
     if (Auth::check()) {
         if (in_array('ADD_EDIT_MODEL', $this->permission)) {
             $validate = \Validator::make($request->all(), ['name' => 'required']);
             if ($validate->passes()) {
                 $model_id = $request->input('model_id');
                 if (User::isSuperAdmin()) {
                     $modelTable = ModelTable::find($model_id);
                 } else {
                     $usr_company = $this->user_company();
                     $modelTable = ModelTable::whereHas('getAdvertiser', function ($q) use($usr_company) {
                         $q->whereHas('GetClientID', function ($p) use($usr_company) {
                             $p->whereIn('user_id', $usr_company);
                         });
                     })->find($model_id);
                 }
                 if ($modelTable) {
                     $data = array();
                     $audit = new AuditsController();
                     $audit_key = $audit->generateRandomString();
                     $positive_offer_id = '';
                     $negative_offer_id = '';
                     if ($request->has('positive_offer_id')) {
                         $positive_offer_id = implode(',', $request->input('positive_offer_id'));
                     }
                     if ($request->has('negative_offer_id')) {
                         $negative_offer_id = implode(',', $request->input('negative_offer_id'));
                     }
                     if ($modelTable->name != $request->input('name')) {
                         array_push($data, 'Name');
                         array_push($data, $modelTable->name);
                         array_push($data, $request->input('name'));
                         $modelTable->name = $request->input('name');
                     }
                     if ($modelTable->seed_web_sites != $request->has('seed_web_sites') ? json_encode($request->input('seed_web_sites')) : '') {
                         array_push($data, 'Seed Sites');
                         array_push($data, $modelTable->seed_web_sites);
                         array_push($data, json_encode($request->input('seed_web_sites')));
                         $modelTable->seed_web_sites = json_encode($request->input('seed_web_sites'));
                     }
                     if ($modelTable->algo != $request->input('algo')) {
                         array_push($data, 'Algo');
                         array_push($data, $modelTable->algo);
                         array_push($data, $request->input('algo'));
                         $modelTable->algo = $request->input('algo');
                     }
                     if ($modelTable->segment_name_seed != $request->input('segment_name_seed')) {
                         array_push($data, 'Segment Name Seed');
                         array_push($data, $modelTable->segment_name_seed);
                         array_push($data, $request->input('segment_name_seed'));
                         $modelTable->segment_name_seed = $request->input('segment_name_seed');
                     }
                     if ($modelTable->description != $request->input('description')) {
                         array_push($data, 'Description');
                         array_push($data, $modelTable->description);
                         array_push($data, $request->input('description'));
                         $modelTable->description = $request->input('description');
                     }
                     if ($modelTable->feature_recency_in_sec != $request->input('feature_recency_in_sec')) {
                         array_push($data, 'Feature Recency In Sec');
                         array_push($data, $modelTable->feature_recency_in_sec);
                         array_push($data, $request->input('feature_recency_in_sec'));
                         $modelTable->feature_recency_in_sec = $request->input('feature_recency_in_sec');
                     }
                     if ($modelTable->max_num_both_neg_pos_devices != $request->input('max_num_both_neg_pos_devices')) {
                         array_push($data, 'Max #Both Devices');
                         array_push($data, $modelTable->max_num_both_neg_pos_devices);
                         array_push($data, $request->input('max_num_both_neg_pos_devices'));
                         $modelTable->max_num_both_neg_pos_devices = $request->input('max_num_both_neg_pos_devices');
                     }
                     if ($modelTable->negative_features_requested != $request->has('negative_features_requested') ? json_encode($request->input('negative_features_requested')) : '') {
                         array_push($data, 'Negative Features Requested');
                         array_push($data, $modelTable->negative_features_requested);
                         array_push($data, json_encode($request->input('negative_features_requested')));
                         $modelTable->negative_features_requested = json_encode($request->input('negative_features_requested'));
                     }
                     if ($modelTable->cut_off_score != $request->input('cut_off_score')) {
                         array_push($data, 'Cut Off Score');
                         array_push($data, $modelTable->cut_off_score);
                         array_push($data, $request->input('cut_off_score'));
                         $modelTable->cut_off_score = $request->input('cut_off_score');
                     }
                     if ($modelTable->pixel_hit_recency_in_seconds != $request->input('pixel_hit_recency_in_seconds')) {
                         array_push($data, 'Pixel Hit Recency In Seconds');
                         array_push($data, $modelTable->pixel_hit_recency_in_seconds);
                         array_push($data, $request->input('pixel_hit_recency_in_seconds'));
                         $modelTable->pixel_hit_recency_in_seconds = $request->input('pixel_hit_recency_in_seconds');
                     }
                     if ($modelTable->max_number_of_device_history_per_feature != $request->input('max_number_of_device_history_per_feature')) {
                         array_push($data, 'Max #Device History/Feature');
                         array_push($data, $modelTable->max_number_of_device_history_per_feature);
                         array_push($data, $request->input('max_number_of_device_history_per_feature'));
                         $modelTable->max_number_of_device_history_per_feature = $request->input('max_number_of_device_history_per_feature');
                     }
                     if ($modelTable->max_number_of_negative_feature_to_pick != $request->input('max_number_of_negative_feature_to_pick')) {
                         array_push($data, 'Max #Negative Feature to Pick');
                         array_push($data, $modelTable->max_number_of_negative_feature_to_pick);
                         array_push($data, $request->input('max_number_of_negative_feature_to_pick'));
                         $modelTable->max_number_of_negative_feature_to_pick = $request->input('max_number_of_negative_feature_to_pick');
                     }
                     if ($modelTable->number_of_positive_device_to_be_used_for_modeling != $request->input('number_of_positive_device_to_be_used_for_modeling')) {
                         array_push($data, '#Positive Device to be Used');
                         array_push($data, $modelTable->number_of_positive_device_to_be_used_for_modeling);
                         array_push($data, $request->input('number_of_positive_device_to_be_used_for_modeling'));
                         $modelTable->number_of_positive_device_to_be_used_for_modeling = $request->input('number_of_positive_device_to_be_used_for_modeling');
                     }
                     if ($modelTable->number_of_negative_device_to_be_used_for_modeling != $request->input('number_of_negative_device_to_be_used_for_modeling')) {
                         array_push($data, '#Negative Device to be Used');
                         array_push($data, $modelTable->number_of_negative_device_to_be_used_for_modeling);
                         array_push($data, $request->input('number_of_negative_device_to_be_used_for_modeling'));
                         $modelTable->number_of_negative_device_to_be_used_for_modeling = $request->input('number_of_negative_device_to_be_used_for_modeling');
                     }
                     if ($modelTable->number_of_both_negative_positive_device_to_be_used != $request->input('number_of_both_negative_positive_device_to_be_used')) {
                         array_push($data, '#Both Device to be Used');
                         array_push($data, $modelTable->number_of_both_negative_positive_device_to_be_used);
                         array_push($data, $request->input('number_of_both_negative_positive_device_to_be_used'));
                         $modelTable->number_of_both_negative_positive_device_to_be_used = $request->input('number_of_both_negative_positive_device_to_be_used');
                     }
                     $audit->store('modelTable', $model_id, $data, 'edit', $audit_key);
                     $old_positive_offer_id = explode(',', $modelTable->positive_offer_id);
                     $old_negative_offer_id = explode(',', $modelTable->negative_offer_id);
                     if ($request->has('positive_offer_id')) {
                         foreach ($request->input('positive_offer_id') as $index) {
                             //ADD NEW POSITIVE OFFER FOR AUDIT
                             if (!in_array($index, $old_positive_offer_id) and $index != 0) {
                                 $audit->store('positive_offer_model', $index, $model_id, 'add', $audit_key);
                             }
                         }
                         foreach ($old_positive_offer_id as $index) {
                             //REMOVE NEW POSITIVE OFFER FOR AUDIT
                             if (!in_array($index, $request->input('positive_offer_id')) and $index != 0) {
                                 $audit->store('positive_offer_model', $index, $model_id, 'remove', $audit_key);
                             }
                         }
                     }
                     if ($request->has('negative_offer_id')) {
                         foreach ($request->input('negative_offer_id') as $index) {
                             if (!in_array($index, $old_negative_offer_id) and $index != 0) {
                                 $audit->store('negative_offer_model', $index, $model_id, 'add', $audit_key);
                             }
                         }
                         foreach ($old_negative_offer_id as $index) {
                             //REMOVE NEW NEGATIVE OFFER FOR AUDIT
                             if (!in_array($index, $request->input('negative_offer_id')) and $index != 0) {
                                 $audit->store('negative_offer_model', $index, $model_id, 'remove', $audit_key);
                             }
                         }
                     }
                     if (!$request->has('positive_offer_id') and $modelTable->positive_offer_id != '') {
                         foreach (explode(',', $modelTable->positive_offer_id) as $index) {
                             $audit->store('positive_offer_model', $index, $model_id, 'remove', $audit_key);
                         }
                     }
                     if (!$request->has('negative_offer_id') and $modelTable->negative_offer_id != '') {
                         foreach (explode(',', $modelTable->negative_offer_id) as $index) {
                             $audit->store('negative_offer_model', $index, $model_id, 'remove', $audit_key);
                         }
                     }
                     $modelTable->positive_offer_id = $positive_offer_id;
                     $modelTable->negative_offer_id = $negative_offer_id;
                     $modelTable->save();
                     //                        $audit->store('modelTable',$model_id,$data,'edit',$audit_key);
                     return Redirect::back()->withErrors(['success' => true, 'msg' => 'Model Edited Successfully']);
                 }
                 return Redirect::back()->withErrors(['success' => false, 'msg' => 'please Select your Client'])->withInput();
             }
             return Redirect::back()->withErrors(['success' => false, 'msg' => $validate->messages()->all()])->withInput();
         }
         return Redirect::back()->withErrors(['success' => false, 'msg' => "You don't have permission"]);
     }
     return Redirect::to(url('/user/login'));
 }