Your IP : 216.73.217.77


Current Path : /home/users/unlimited/www/api.xalonx.com/app/Http/Controllers/v1/
Upload File :
Current File : /home/users/unlimited/www/api.xalonx.com/app/Http/Controllers/v1/TimeslotController.php

<?php

namespace App\Http\Controllers\v1;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Timeslots;
use App\Models\Appointments;
use Validator;
use DB;

class TimeslotController extends Controller
{
    public function save(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'uid' => 'required',
            'week_id' => 'required',
            'slots' => 'required',
        ]);
        if ($validator->fails()) {
            $response = [
                'success' => false,
                'message' => 'Validation Error.',
                $validator->errors(),
                'status' => 500
            ];
            return response()->json($response, 404);
        }
        $matchThese = ['uid' => $request->uid, 'week_id' => $request->week_id];
        $checkData = Timeslots::where($matchThese)->first();
        if (is_null($checkData) || !$checkData) {
            $data = Timeslots::create($request->all());
            if (is_null($data)) {
                $response = [
                    'data' => $data,
                    'message' => 'error',
                    'status' => 500,
                ];
                return response()->json($response, 200);
            }
            $response = [
                'data' => $data,
                'success' => true,
                'status' => 200,
            ];
            return response()->json($response, 200);
        }

        $response = [
            'success' => false,
            'message' => 'Same slot already exist',
            'status' => 500
        ];
        return response()->json($response, 500);


    }

    public function getById(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'id' => 'required',
        ]);
        if ($validator->fails()) {
            $response = [
                'success' => false,
                'message' => 'Validation Error.',
                $validator->errors(),
                'status' => 500
            ];
            return response()->json($response, 404);
        }

        $data = Timeslots::find($request->id);

        if (is_null($data)) {
            $response = [
                'success' => false,
                'message' => 'Data not found.',
                'status' => 404
            ];
            return response()->json($response, 404);
        }

        $response = [
            'data' => $data,
            'success' => true,
            'status' => 200,
        ];
        return response()->json($response, 200);
    }

    public function getByUid(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'id' => 'required',
        ]);
        if ($validator->fails()) {
            $response = [
                'success' => false,
                'message' => 'Validation Error.',
                $validator->errors(),
                'status' => 500
            ];
            return response()->json($response, 404);
        }

        $data = Timeslots::where('uid', $request->id)->get();

        $response = [
            'data' => $data,
            'success' => true,
            'status' => 200,
        ];
        return response()->json($response, 200);
    }

    public function update(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'id' => 'required',
        ]);
        if ($validator->fails()) {
            $response = [
                'success' => false,
                'message' => 'Validation Error.',
                $validator->errors(),
                'status' => 500
            ];
            return response()->json($response, 404);
        }
        $data = Timeslots::find($request->id)->update($request->all());

        if (is_null($data)) {
            $response = [
                'success' => false,
                'message' => 'Data not found.',
                'status' => 404
            ];
            return response()->json($response, 404);
        }
        $response = [
            'data' => $data,
            'success' => true,
            'status' => 200,
        ];
        return response()->json($response, 200);
    }

    public function delete(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'id' => 'required',
        ]);
        if ($validator->fails()) {
            $response = [
                'success' => false,
                'message' => 'Validation Error.',
                $validator->errors(),
                'status' => 500
            ];
            return response()->json($response, 404);
        }
        $data = Timeslots::find($request->id);
        if ($data) {
            $data->delete();
            $response = [
                'data' => $data,
                'success' => true,
                'status' => 200,
            ];
            return response()->json($response, 200);
        }
        $response = [
            'success' => false,
            'message' => 'Data not found.',
            'status' => 404
        ];
        return response()->json($response, 404);
    }

    public function getAll()
    {
        $data = Timeslots::all();
        if (is_null($data)) {
            $response = [
                'success' => false,
                'message' => 'Data not found.',
                'status' => 404
            ];
            return response()->json($response, 404);
        }

        $response = [
            'data' => $data,
            'success' => true,
            'status' => 200,
        ];
        return response()->json($response, 200);
    }

    public function getActiveCities(Request $request)
    {
        $data = Timeslots::where('status', 1)->get();
        $response = [
            'data' => $data,
            'success' => true,
            'status' => 200,
        ];
        return response()->json($response, 200);
    }

    public function importData(Request $request)
    {
        $request->validate([
            "csv_file" => "required",
        ]);
        $file = $request->file("csv_file");
        $csvData = file_get_contents($file);
        $rows = array_map("str_getcsv", explode("\n", $csvData));
        $header = array_shift($rows);
        foreach ($rows as $row) {
            if (isset($row[0])) {
                if ($row[0] != "") {

                    if (count($header) == count($row)) {
                        $row = array_combine($header, $row);
                        $insertInfo = array(
                            'id' => $row['id'],
                            'name' => $row['name'],
                            'lat' => $row['lat'],
                            'lng' => $row['lng'],
                            'status' => $row['status'],
                        );
                        $checkLead = Timeslots::where("id", "=", $row["id"])->first();
                        if (!is_null($checkLead)) {
                            DB::table('cities')->where("id", "=", $row["id"])->update($insertInfo);
                        } else {
                            DB::table('cities')->insert($insertInfo);
                        }
                    }
                }
            }
        }
        $response = [
            'data' => 'Done',
            'success' => true,
            'status' => 200,
        ];
        return response()->json($response, 200);
    }


    public function getSlotsByForBookings(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'uid' => 'required',
            'week_id' => 'required',
            'date' => 'required',
            'from' => 'required'
        ]);
        if ($validator->fails()) {
            $response = [
                'success' => false,
                'message' => 'Validation Error.',
                $validator->errors(),
                'status' => 500
            ];
            return response()->json($response, 404);
        }
        $matchThese = ['uid' => $request->uid, 'week_id' => $request->week_id];
        $data = Timeslots::where($matchThese)->first();
        if ($request->from == 'individual') {
            $bookedSlots = Appointments::select('slot')->where('freelancer_id', $request->uid)->whereDate('save_date', '=', $request->date)->get();
        } else {
            $bookedSlots = Appointments::select('slot')->where('salon_id', $request->uid)->whereDate('save_date', '=', $request->date)->get();
        }
        $response = [
            'data' => $data,
            'bookedSlots' => $bookedSlots,
            'success' => true,
            'status' => 200,
        ];
        return response()->json($response, 200);
    }
}