<?php
/**
 * Created by PhpStorm.
 * User: sunil
 * Date: 12/11/18
 * Time: 2:02 PM
 */

namespace App\Imports;

use App\DailyCalling;
use App\Http\Controllers\Admin\ConsumerApplicationController;
use App\Slack;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToCollection;

class CallingFile implements ToCollection
{

    use Importable;
    private $request;

    public function __construct(Request $request){
        $this->request = $request;
    }

    /**
     * @param Collection $collection
     */
    public function collection(Collection $collection)
    {
        // TODO: Implement collection() method.
        $data = $collection->toArray();
        $user = Auth::user();
        $id = $user->id;
        try {
            $failed = 0;
            $success = 0;
            $response = [];
            unset($data[0]);
            foreach ($data as $item) {
                if($item[0]) {
                    $success++;
                    $response[] = [
                        'application_id' => $item[0],
                        'email' => $item[1],
                        'phone' => $item[2],
                        'amount' => $item[3],
                        'first_emi_date' => $item[4],
                        'nach_status' => $item[5],
                        'advisor' => $item[6],
                        'status' => $item[7],
                        'feedback' => $item[8],
                        'paid_amount' => $item[9],
                        'date' => $item[10],
                        'payment_mode' => $item[11],
                        'user_id' => $id,
                        'ptp_date' => $item[12],
                        'created_at' => Carbon::now()->toDateTimeString()
                    ];
                }else{
                    $failed++;
                }


                if($item[0] && $item[12]){
                    (new ConsumerApplicationController())->assignPTPDate(new Request(['user_id' => $id, 'date' => $item[12], 'application_id' => $item[0], 'bot' => true]));
                }
            }

            DailyCalling::insert($response);

            (new Slack(new Request(['title' => 'Daily Calling Report', 'fields' => ['Name' => $user->name, 'Total Calls' => count($response), 'Total Calls Uploaded' => $success, 'Failed Calls to Upload' => $failed], 'group' => 'payment_collection'])))->send();

        }catch (\Exception $exception){
            (new Slack(new Request(['title' => 'Calling File upload error', 'fields' => ['e' => $exception->getMessage(),'l' => $exception->getLine(),'t' => $exception->getTraceAsString(),'item' => isset($item) ? $item : ''], 'group' => 'payment_collection'])))->send();
        }
    }
}