<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

use Illuminate\Support\Facades\Mail;
use Illuminate\Http\RedirectResponse;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class CampaignController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function indexAction()
    {
        $campaigns = DB::table('campaigns')->get();
        $return['campaigns'] = $campaigns;

        $shoppingcenter = DB::table('contact')->get();

        $return['shoppingcenter'] = $shoppingcenter;

        for ($i = 0; $i <= 14; $i++){
            $return['campaign'.$i] = DB::table('campaigns')->where('sort',$i)->first();
        }
        
        $return['campaign_contact'] = DB::table('campaign_contact')->get();

        return view('index', $return);
    }
    
    public function sendmailAction(Request $request){
//        var_dump('test');die();
        
        $dataArray = $request->input();
        
        $campaign_contact = [];
        if (key_exists('chooseType', $dataArray) && $dataArray['chooseType'] != '' 
                && key_exists('chooseCentre', $dataArray) && $dataArray['chooseCentre'] != ''){
            $chooseTypetmp = explode(';', $dataArray['chooseType']);
            $chooseCentretmp = explode(';', $dataArray['chooseCentre']);
            foreach ($chooseTypetmp as $chooseTypeValue){
                if ($chooseTypeValue != ''){
                    foreach ($chooseCentretmp as $chooseCentreValue)
                        if ($chooseCentreValue != ''){
                            $tmpArray = DB::table('campaign_contact')
                                    ->join('campaigns', 'campaigns.id', '=', 'campaign_contact.campaign_id')
                                    ->join('contact', 'contact.id', '=', 'campaign_contact.contact_id')
                                    ->select(
                                            'campaign_contact.campaign_id', 
                                            'campaign_contact.contact_id', 
                                            'contact.m1', 
                                            'campaigns.heading', 
                                            'campaign_contact.count', 
                                            'campaign_contact.price',
                                            'contact.function',
                                            'contact.phone',
                                            'contact.email'
                                        )                                    
                                    ->where('campaign_id',$chooseTypeValue)
                                    ->where('contact_id',$chooseCentreValue)
                                    ->first();  
                            array_push($campaign_contact, $tmpArray);
                        }
                }
            }
        }
        $dataArray['campaign_contact'] = $campaign_contact;
        
        $emailData = array(
            'to'        => 'artkoz8@gmail.com', 
            'udw'        => $dataArray['email'], 
            'name'      => $dataArray['company'],
            'from'      => 'M1@buzzgroup.eu',
            'subject'   => $dataArray['company'].' - Zapytanie o powierzchnię reklamową.',
        );        
        

        if (key_exists('send_to_me', $dataArray) && $dataArray['send_to_me'] == 1)
            $emailData['to'] = ['artkoz8@gmail.com', 'M1@buzzgroup.eu', $dataArray['email']];
        else
            $emailData['to'] = ['artkoz8@gmail.com', 'M1@buzzgroup.eu'];        
        
        Mail::send('mails.sendmail', $dataArray, function($message) use ($emailData) {
            $message
                    ->to($emailData['to'], 'M1 DLA BIZNESU')
                    ->replyTo($emailData['udw'], $emailData['name'])
                    ->subject($emailData['subject']);
        });             
        
        return redirect()
                ->back()
                ->with('message', 'Wiadomość została wysłana');
    }
    
    public function sendmailkampaniaAction(Request $request){

        $dataArray = $request->input();
        
        $campaign_contact = [];
        if (key_exists('chooseType_id', $dataArray) && $dataArray['chooseType_id'] != '' 
                && key_exists('chooseCentre', $dataArray) && $dataArray['chooseCentre'] != ''){
            
            $chooseCentretmp = explode(';', $dataArray['chooseCentre']);
            foreach ($chooseCentretmp as $chooseCentreValue)
                if ($chooseCentreValue != ''){
                    $tmpArray = DB::table('campaign_contact')
                            ->join('contact', 'contact.id', '=', 'campaign_contact.contact_id')
                            ->select(
                                    'campaign_contact.campaign_id', 
                                    'campaign_contact.contact_id', 
                                    'contact.m1', 
                                    'campaign_contact.count', 
                                    'campaign_contact.price',
                                    'contact.function',
                                    'contact.phone',
                                    'contact.email'
                                )                                    
                            ->where('contact_id',$chooseCentreValue)
                            ->first();  
                    array_push($campaign_contact, $tmpArray);
                }
        }
        $dataArray['campaign_contact'] = $campaign_contact;
        
        if (key_exists('send_to_me', $dataArray) && $dataArray['send_to_me'] == 1)
            $dataArray['to'] = ['artkoz8@gmail.com', 'M1@buzzgroup.eu', $dataArray['email']];
        else
            $dataArray['to'] = ['artkoz8@gmail.com', 'M1@buzzgroup.eu'];
        
        $dataArray['from'] = 'M1@buzzgroup.eu';
        $dataArray['subject'] = $dataArray['company'].' - Zapytanie o powierzchnię reklamową '. $dataArray['chooseType_name'] .'.';       
        
        Mail::send('mails.sendmailkampania', $dataArray, function($message) use ($dataArray) {
            $message
                    ->to($dataArray['to'], 'M1 DLA BIZNESU')
                    ->replyTo($dataArray['email'], $dataArray['company'])
                    ->subject($dataArray['subject']);
        });
        
//        echo '<pre>';
//        print_r($dataArray);
//        echo '<pre>';
//        die();         
        
        return redirect()
                ->back()
                ->with('message', 'Wiadomość została wysłana');
    }    
    
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function aboutusAction(){
        
        $campaigns = DB::table('campaigns')
                ->orderBy('sort', 'desc')
                ->get();
        $return['campaigns'] = $campaigns;
        
        $pages = DB::table('pages')
                ->orderBy('row', 'asc')
                ->get();
        $return['pages'] = $pages;

        $shoppingcenters = DB::table('contact')->get();

        $return['shoppingcenters'] = $shoppingcenters;
        
        $return['campaign_contact'] = DB::table('campaign_contact')->get();

        return view('aboutus', $return);
    }    

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */

    public function singlepage1(){
        $campaigns = DB::table('campaigns')->where('sort','0')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

    public function singlepage2(){
        $campaigns = DB::table('campaigns')->where('sort','1')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;  
        
        return view('podstrona', $return);
    }

     public function singlepage3(){
        $campaigns = DB::table('campaigns')->where('sort','2')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;        
        
        return view('podstrona', $return);
    }

     public function singlepage4(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','3')->first();
        $campaigns = DB::table('campaigns')->where('sort','3')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage5(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','4')->first();
        $campaigns = DB::table('campaigns')->where('sort','4')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage6(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','5')->first();
        $campaigns = DB::table('campaigns')->where('sort','5')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage7(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','6')->first();
        $campaigns = DB::table('campaigns')->where('sort','6')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage8(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','7')->first();
        $campaigns = DB::table('campaigns')->where('sort','7')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage9(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','8')->first();
        $campaigns = DB::table('campaigns')->where('sort','8')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage10(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','9')->first();
        $campaigns = DB::table('campaigns')->where('sort','9')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage11(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','10')->first();
        $campaigns = DB::table('campaigns')->where('sort','10')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage12(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','11')->first();
        $campaigns = DB::table('campaigns')->where('sort','11')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage13(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','12')->first();
        $campaigns = DB::table('campaigns')->where('sort','12')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }

     public function singlepage14(){
//        $return['campaign'] = DB::table('campaigns')->where('sort','13')->first();
        $campaigns = DB::table('campaigns')->where('sort','13')->first();
        $return['campaign'] = $campaigns;
        
        $contacts = $this->getContacts($campaigns);
        $return['contacts'] = $contacts;
        
        return view('podstrona', $return);
    }
    
    /**
     * Funkcja pobiera centra handlowe dla określonego nośnika
     * @param string $campaning
     * @return array
     */
    private function getContacts($campaigns){
        $tmpArray = DB::table('campaign_contact')
                ->join('contact', 'contact.id', '=', 'campaign_contact.contact_id')
                ->select(
                        'campaign_contact.campaign_id', 
                        'campaign_contact.contact_id', 
                        'contact.m1', 
                        'campaign_contact.count', 
                        'campaign_contact.price',
                        'campaign_contact.image',
                        'contact.function',
                        'contact.phone',
                        'contact.email'
                    )                                    
                ->where('campaign_id',$campaigns->id)
                ->get();      

        return $tmpArray;
    }

    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
