<?php
use App\Manager;
use App\User;
use App\Organization;
use App\Coupon;
class ManagerTest extends TestCase
{
    /**
     * Test to check get manager
     *
     * @return void
     */
    public function testManagerRecord()
    {
       $email = str_random(5).'@ggg.com'; 
       $response = $this->call('POST', 'api/v1/manager', [
              'name'         => 'sample',
              'email'        => $email,
              'organization_pic'  =>'',
              'password'     => '123456',
              'mobile'       => '1234567',
              'orgname'      => str_random(5),
              'role'         => 'ROLE_MANAGER'
         ]);
        $this->assertEquals(200, $response->status());
        $last = Manager::max('id');

        $response = $this->call('GET', "api/v1/manager/$last");
        $this->assertEquals(200, $response->status());

        $lastOrg = Organization::max('id');
        $response = $this->call('POST', 'api/v1/manager/dashboard', [
           'organization_id' => $lastOrg,
           'manager_id'      => $last
        ]);
        $this->assertEquals(200, $response->status());


        $this->get('api/v1/manager/0000')
             ->seeJson([
                'status' => 'fail',
             ]);
    }
    
     /**
     * Test to check get managers
     *
     * @return void
     */
    public function testManager()
    {
        $response = $this->call('GET', 'api/v1/manager/');
        $this->assertEquals(200, $response->status());
    }
    

    /**
     * Test to check get plan
     *
     * @return void
     */
    public function testgetPlan()
    {
         $response = $this->call('GET', "api/v1/manager/plan");
         $this->assertEquals(200, $response->status());

         $response = $this->call('GET', "api/v1/manager/get");
         $this->assertEquals(200, $response->status());

    }



public function testGetStripe()
{
        $last = Manager::max('id');
        $response = $this->call('POST', 'api/v1/manager/getstripeid', [
           'manager_id'      => $last
        ]);
        $this->assertEquals(200, $response->status());
}


public function testGetFb()
{
   $last = Manager::max('id');
        $response = $this->call('POST', 'api/v1/manager/getfbverified', [
           'manager_id'      => $last
        ]);
        $this->assertEquals(200, $response->status());
}
public function testSendSMSAndMail()
{
        $last = User::max('id');
        $objCoupon = Coupon::where('user_id', $last)->get()->where('is_send', 0)->first();
       
        if($objCoupon){
        $response = $this->put("api/v1/manager/sendSmsAndMail/$last", [
           'manager_id'      => $last
        ])->seeJson([
                'status' => 'success',
             ]);
        }else{
            $response = $this->put("api/v1/manager/sendSmsAndMail/$last", [
           'manager_id'      => $last
        ])->seeJson([
                'status' => 'fail',
             ]);
        }
        
}
public function testGetTwitter()
{
        $last = User::where('role', 'ROLE_MANAGER')->select('id')->orderBy('id', 'desc')->first(); 
        $response = $this->call('POST', 'api/v1/manager/gettwitterverified', [
           'manager_id'      => $last
        ]);
        $this->assertEquals(200, $response->status());
}

     /**
     * Test to check update manager
     *
     * @return void
     */
public function testUpdateManager()
{
        $email = str_random(5).'@ggg.com'; 
        $last = User::max('id');

        $this->put('api/v1/manager/121111', [
            'name'         => 'asasas',
            'email'        => $email,
            'mobile'       => '121212',
            'status'       => '1',
            'password'     => '123456',
               ])
             ->seeJson([
                'status' => 'fail',
             ]);

        $this->put("api/v1/manager/$last", [
            'name'        => 'asasas',
            'email'       => $email,
            'mobile'      => '121212',
            'status'      => '1',
            'password'    => '123456',
               ])
             ->seeJson([
                'status' => 'success',
             ]);
}
     /**
     * Test to delete manager
     *
     * @return void
     */
    public function testDeleteManager()
    {
        $email = str_random(5).'@ggg.com'; 
        $response = $this->call('POST', 'api/v1/manager', [
              'name'         => 'sample',
              'email'        => $email,
              'organization_pic'  =>'',
              'password'     => '123456',
              'mobile'       => '1234567',
              'orgname'      => str_random(5),
              'role'         => 'ROLE_MANAGER'
         ]);
        $this->assertEquals(200, $response->status());
        $last = Manager::max('id');
        $result = DB::table('users')
                    ->select('id')
                    ->orderBy('id', 'desc')->first();
        $id = $result->id;
        
        $this->json('DELETE', "api/v1/manager/$id")
              ->seeJson([
                'status' => 'success',
                ]);
    }
}
