/**
  * [getContact]
  * @param  [type] $company_id [description]
  * @return [type]             [description]
  */
 public function getContact($company_id)
 {
     $customer_id = -1;
     if (Config::get('eenvoudcrm.moneybird_testing') === true) {
         $customer_id = Config::get("eenvoudcrm.moneybird_test_user_id");
     } else {
         // get mb client id
         $customer_meta = CompanyMeta::where('company_id', '=', $company_id)->where('type', '=', 'moneybird')->where('subtype', '=', 'contact')->where('key', '=', 'id')->first();
         if ($customer_meta) {
             $customer_id = (int) $customer_meta->value;
         }
     }
     return $customer_id;
 }
 public function postCSVUpload()
 {
     $input = Input::all();
     error_log(json_encode($input));
     // validation
     $rules = array('file' => 'mimes:csv,txt');
     $validation = Validator::make($input, $rules);
     if ($validation->fails()) {
         return Response::make($validation->errors->first(), 400);
     }
     // check for duplicates and move to uploads dir
     $file = Input::file('file');
     $destinationPath = 'uploads';
     $filename = $file->getClientOriginalName();
     $file_path = public_path() . '/' . $destinationPath . '/' . $filename;
     // get rid of old entries
     Emailusage::where('filename', $filename)->delete();
     // delete old file
     if (File::exists($file_path)) {
         File::delete($file_path);
     }
     // move new file
     $upload_success = Input::file('file')->move($destinationPath, $filename);
     if ($upload_success) {
         $handle = fopen($file_path, 'r');
         while (($line = fgetcsv($handle)) !== FALSE) {
             // aws account
             $curr_aws_account = $line[1];
             // 1st line of col labels
             if (!is_numeric($curr_aws_account)) {
                 //error_log($curr_aws_account." not numeric ):");
                 continue;
             }
             $cat_cmp = strcmp($line[4], 'Amazon Simple Email Service');
             if ($cat_cmp !== 0) {
                 //error_log($cat_cmp." Cat not relevant ".$line[4]);
                 continue;
             }
             $mail_service_cmp = strpos(strtolower($line[5]), strtolower('Cost per recipient of SendEmail'));
             $attachments_service_cmp = strpos(strtolower($line[5]), strtolower('Cost per GB of attachments'));
             if ($mail_service_cmp === false && $attachments_service_cmp === false) {
                 error_log($service_cmp . " Service not relevant " . $line[5]);
                 continue;
             }
             //$line is an array of the csv elements
             $num_columns = count($line);
             error_log(">>> LINE " . json_encode($line));
             // get the corresponding company_id
             $company_meta = CompanyMeta::where('type', 'aws')->where('subtype', 'auth')->where('key', 'account')->where('value', $curr_aws_account)->first();
             $company_id = -1;
             if ($company_meta) {
                 $company_id = $company_meta->company_id;
                 error_log($company_id . " Company FOUND :)");
             }
             // Error no company found
             if ($company_id === -1) {
                 error_log("Company NOT found ):");
                 continue;
             }
             // use start date for period
             $curr_period = explode(" ", $line[2])[0];
             error_log("Curr period " . $curr_period);
             // make sure day is 1st of the month
             // so that date can de used as a month tag ?
             //
             // get the subscription
             $email_subscription = Subscription::where("service_id", Config::get('eenvoudcrm.nieuwsbrieven_service_id'))->where('company_id', $company_id)->first();
             if (!$email_subscription) {
                 error_log("Consistency check falure - no nieuwsbrieven subscription (28) found");
                 continue;
             }
             $mail_bill_type = $mail_service_cmp === false ? 'attach' : 'mail';
             // search emailusage table for already existing entries
             $curr_emailusage = Emailusage::where('type', $mail_bill_type)->where('period', '=', $curr_period)->where('subscription_id', '=', $email_subscription->id)->first();
             // if they exist update
             if ($curr_emailusage) {
                 //update
                 error_log('update ' . json_encode($curr_emailusage));
                 $curr_emailusage->type = $mail_bill_type;
                 $curr_emailusage->cnt = $line[6];
                 $curr_emailusage->filename = $filename;
                 $curr_emailusage->save();
             } else {
                 // get the subscription
                 $email_subscription = Subscription::whereRaw("service_id=" . Config::get('eenvoudcrm.nieuwsbrieven_service_id') . " AND company_id={$company_id}")->first();
                 error_log('create ' . json_encode($email_subscription));
                 if ($email_subscription) {
                     $curr_emailusage = new Emailusage();
                     $curr_emailusage->type = $mail_bill_type;
                     $curr_emailusage->subscription_id = $email_subscription->id;
                     $curr_emailusage->period = $curr_period;
                     $curr_emailusage->cnt = $line[6];
                     $curr_emailusage->filename = $filename;
                     $curr_emailusage->save();
                     error_log(json_encode($curr_emailusage));
                 } else {
                     error_log("No niewsbrieven subscriptions for " . $company_id);
                 }
             }
         }
         return Response::json(['success' => 'success', 'reload' => true]);
     }
 }