mardi 14 novembre 2017

How can we check checkin and checkout date from client side is matching with database dates using laravel and mongo?

I have a hotel booking calendar. I need to check the checkin and checkout date, submit from client side, is matching with dates in database (earliest_summer_open, latest_summer_close) and (earliest_winter_open, latest_winter_close). If the checkin and checkout time from client side is not matching with database show alert message "Booking not possible". I have added aggregate function but not working. Please check and my data, example result and code.

Example

Summer Season earliest_summer_open = 2018-04-30 latest_summer_close = 2018-10-24

If the checkin and checkout time from client side is matching b/w earliest_summer_open and latest_summer_close then show alert "You are booked in a season" otherwise alert becomes "Booking not possible".

Winter Season earliest_winter_open = 2017-10-31 latest_winter_close = 2018-04-24

If the checkin and checkout time from client side is matching b/w earliest_winter_open and latest_winter_close then show alert "You are booked in a season" otherwise alert becomes "Booking not possible".

Data

{ "_id" : ObjectId("5a095d3e9a89202c0c1fb0d3"), "summerSeason" : 1, "summerSeasonYear" : 2018, "summerSeasonStatus" : "open", "earliest_summer_open" : ISODate("2018-04-30T22:00:00Z"), "latest_summer_close" : ISODate("2018-10-24T22:00:00Z"), "summer_next_season" : ISODate("2019-04-30T22:00:00Z"), "winterSeasonYear" : 2018, "winterSeasonStatus" : "open", "earliest_winter_open" : ISODate("2017-10-31T23:00:00Z"), "latest_winter_close" : ISODate("2018-04-24T22:00:00Z"), "winter_next_season" : ISODate("2018-10-31T23:00:00Z"), "cabin_owner" : ObjectId("5858d996d2ae67e164bf40e9"), "cabin_id" : ObjectId("58358510d2ae67d866ec89e6"), "updated_at" : ISODate("2017-11-13T08:58:44Z"), "created_at" : ISODate("2017-11-13T08:52:14Z") }

{ "_id" : ObjectId("5a0ab1239a89202c0224ba63"), "summerSeason" : 0, "summerSeasonYear" : 2018, "summerSeasonStatus" : "open", "earliest_summer_open" : ISODate("2018-05-31T22:00:00Z"), "latest_summer_close" : ISODate("2018-09-24T22:00:00Z"), "summer_next_season" : ISODate("2019-05-31T22:00:00Z"), "winterSeason" : 1, "winterSeasonYear" : 2018, "winterSeasonStatus" : "open", "earliest_winter_open" : ISODate("2017-11-30T23:00:00Z"), "latest_winter_close" : ISODate("2018-03-24T23:00:00Z"), "winter_next_season" : ISODate("2019-11-30T23:00:00Z"), "cabin_owner" : ObjectId("586b88b4d2ae676a129b0421"), "cabin_id" : ObjectId("5799f15e049ac12422000032"), "updated_at" : ISODate("2017-11-14T09:03:29Z"), "created_at" : ISODate("2017-11-14T09:02:27Z") }

booking.blade.php

public function checkAvailability(CabinownerBookingRequest $request)
    {
        $daterange              = explode(" - ", $request->bookingDate);
        $dateBegin              = $this->getDateUtc($daterange[0]);
        $dateEnd                = $this->getDateUtc($daterange[1]);

        //dd($dateBegin.'----'.$dateEnd); //1525903200000----1526767200000
        $seasons                = Season::raw(function ($collection) use ($dateBegin, $dateEnd) {
            return $collection->aggregate([
                [
                    '$match' => [
                        'cabin_owner' => new \MongoDB\BSON\ObjectID(Auth::user()->_id),
                        'cabin_id' => new \MongoDB\BSON\ObjectID(session('cabin_id')),
                        'earliest_summer_open' => ['$gte' => $dateBegin, '$lt' => $dateEnd],
                        'latest_summer_close' => ['$gte' => $dateBegin, '$lt' => $dateEnd]
                    ],
                ],

                [
                    '$project' => [

                        'summerSeason' => 1,
                        'summerSeasonStatus' => 1,
                        'summerSeasonYear' => 1,
                        'earliest_summer_open' => 1,
                        'latest_summer_close' => 1,
                        'winterSeason' => 1,
                        'winterSeasonStatus' => 1,
                        'winterSeasonYear' => 1,
                        'earliest_winter_open' => 1,
                        'latest_winter_close' => 1,
                    ],
                ]
            ]);
        });

        dd($seasons); //1525125600000---1540418400000
    }



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2AGaZ8n
via IFTTT

Aucun commentaire:

Enregistrer un commentaire