Esempio n. 1
0
        public mPosition AddMealsDetails(List <MealDetails> objMealsProperties, List <RoutingInfo> lstRoutingInfo, QuoteGetReq request, List <AccomodationInfo> lstAcc, string status)
        {
            foreach (var item in lstRoutingInfo)
            {
                int day = item.Days;
                for (int i = 1; i <= day; i++)
                {
                    objMealsProperties.Add(new MealDetails {
                        CityID = item.ToCityID, CityName = item.ToCityName, VenueTypes = new List <VenueTypes>(), DayID = "Day " + (objMealsProperties.Count + 1)
                    });
                }
            }
            QRFCounterRequest qrfCounterRequest = new QRFCounterRequest();

            qrfCounterRequest.CounterType = _configuration["CounterType:Meals"].ToString();
            TimeSpan timeoutprev;

            if (status == "i")
            {
                foreach (var item in objMealsProperties)
                {
                    item.CreateUser = request.UserName;
                    item.CreateDate = DateTime.Now; item.EditDate = null; item.EditUser = "";
                    item.MealID     = item.MealID == 0 ? _genericRepository.GetNextReferenceNumber(qrfCounterRequest).LastReferenceNumber : item.MealID;
                    item.SequenceNo = lstRoutingInfo.Where(r => r.ToCityID == item.CityID).Select(t => t.RouteSequence).FirstOrDefault();
                    item.VenueTypes.ForEach(a => { a.VenueDetails.CreateDate = DateTime.Now; a.VenueDetails.EditDate = null; a.VenueDetails.EditUser = ""; });
                    AccomodationInfo objAccomodationInfo = lstAcc.Where(a => a.StartingFrom == item.DayID && a.IsDeleted == false).FirstOrDefault();
                    if (objAccomodationInfo != null)
                    {
                        MealDetails md = CheckDefaultMealPlan(item, timeoutprev, objAccomodationInfo, out TimeSpan newtimeout);
                        item.Breakfast   = md.Breakfast;
                        item.DefaultPlan = md.DefaultPlan;
                        item.Dinner      = md.Dinner;
                        item.Lunch       = md.Lunch;
                        timeoutprev      = newtimeout;
                    }
                }
            }

            mPosition objPosition = new mPosition();

            objPosition.Meals = objMealsProperties.OrderBy(m => m.SequenceNo).ToList();
            objPosition.QRFID = request.QRFID;

            return(objPosition);
        }
Esempio n. 2
0
        public IActionResult Create(string officeTitle1, string officeTitle2, Trip trip, TicketStatusEnum ticketStatus, CarRentalEnum carRental, AccomodationStatusEnum accomodationStatus)
        {
            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var office1 = _context.Office.SingleOrDefault(x => x.Name == officeTitle1);
                    var office2 = _context.Office.SingleOrDefault(x => x.Name == officeTitle2);
                    trip.ToOffice   = office2.Id;
                    trip.FromOffice = office1.Id;
                    trip.TripStatus = 0;

                    user             = _us.GetUserFromRequest(Request);
                    trip.Organizator = user.Id;
                    _context.Add(trip);
                    //await _context.SaveChangesAsync();
                    Console.WriteLine(trip.Id);


                    trip.Participators = new List <TripParticipator>();
                    int i1 = 0;
                    if (list == null || list.Count() == 0)
                    {
                        return(RedirectToAction(nameof(Create), new { error = "Kelionėje turi dalyvauti bent vienas dalyvis" }));
                    }
                    list = list.Distinct().ToList();
                    foreach (int i in list)
                    {
                        TripParticipator participator = new TripParticipator();
                        participator.TripId  = trip.Id;
                        participator.UserId  = i;
                        participator.Approve = false;
                        if (i1 != i)
                        {
                            trip.Participators.Add(participator);
                        }
                        i1 = i;
                    }
                    if (!_ts.IsTripParticipatorsBusy(trip))
                    {
                        _context.Add(trip);
                        _context.SaveChanges();

                        foreach (TripParticipator tripParticipator in trip.Participators)
                        {
                            var accomodationInfo = new AccomodationInfo()
                            {
                                TripId = trip.Id, UserId = tripParticipator.UserId, Start = DateTime.MinValue, End = DateTime.MinValue, AccomodationStatus = accomodationStatus
                            };
                            _context.Add(accomodationInfo);
                        }

                        var flightInfo = new FlightInformation()
                        {
                            TripId = trip.Id, Cost = 0, Start = DateTime.MinValue, End = DateTime.MinValue, FlightTicketStatus = ticketStatus
                        };
                        _context.Add(flightInfo);
                        var rentalCarinfo = new RentalCarInformation()
                        {
                            TripId = trip.Id, Cost = 0, Start = DateTime.MinValue, End = DateTime.MinValue, CarRental = carRental
                        };
                        _context.Add(rentalCarinfo);

                        _context.SaveChanges();
                        transaction.Commit();
                        return(RedirectToAction(nameof(Index)));
                    }
                    else
                    {
                        return(RedirectToAction(nameof(Create), new { error = "Pasirinkti dalyiai šiuo laiku užimti" }));
                    }
                }
                catch (Exception)
                {
                    return(NotFound());
                }
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> Create(AccomodationInfo accomodationInfo)
        {
            var accomodations = _context.AccomodationInfo.Where(a => a.TripId == accomodationInfo.TripId).ToList();

            var officeDestinationId = _context.Trip.Single(t => t.Id == accomodationInfo.TripId).ToOffice;

            var apartmentId = _context.Apartment.Single(a => a.OfficeId == officeDestinationId).Id;

            var apartmentRooms = _context.ApartmentRoom.Where(a => a.ApartmentId == apartmentId).ToList();

            var trip = _context.Trip.Single(t => t.Id == accomodationInfo.TripId);

            var tripParticipators = _context.TripParticipators.Where(t => t.TripId == trip.Id).ToList();

            List <ApartmentRoom> emptyRooms = GetAvailableRooms(apartmentRooms, accomodationInfo.Start, accomodationInfo.End);

            if (accomodationInfo.Cost != 0 || accomodationInfo.HotelName != null)
            {
                foreach (TripParticipator tripParticipator in tripParticipators)
                {
                    var accomodation = accomodations.Single(a => a.UserId == tripParticipator.UserId);

                    accomodation.TripId             = trip.Id;
                    accomodation.UserId             = tripParticipator.UserId;
                    accomodation.ApartmentRoomId    = 0;
                    accomodation.Start              = accomodationInfo.Start;
                    accomodation.End                = accomodationInfo.End;
                    accomodation.HotelName          = accomodationInfo.HotelName;
                    accomodation.Cost               = accomodationInfo.Cost;
                    accomodation.AccomodationStatus = AccomodationStatusEnum.Booked;

                    _context.Update(accomodation);
                }
                _context.SaveChanges();

                return(RedirectToAction("Details", "Trip", new { id = accomodationInfo.TripId }));
            }

            if (tripParticipators.Count > emptyRooms.Count)
            {
                // kambariu maziau nei keliautoju, automatiskai grizt ir uzsakyt viesbuti
                ViewBag.HotelRequired = true;
                return(RedirectToAction("Create", "Accomodation", new { id = accomodationInfo.Id, isHotelRequired = true, start = accomodationInfo.Start, end = accomodationInfo.End }));
            }

            int i = 0;

            foreach (TripParticipator tripParticipator in tripParticipators)
            {
                var           accomodation = accomodations.Single(a => a.UserId == tripParticipator.UserId);
                ApartmentRoom apRoom       = emptyRooms[i];

                accomodation.TripId             = trip.Id;
                accomodation.UserId             = tripParticipator.UserId;
                accomodation.ApartmentRoomId    = apRoom.Id;
                accomodation.HotelName          = null;
                accomodation.Cost               = 0;
                accomodation.Start              = accomodationInfo.Start;
                accomodation.End                = accomodationInfo.End;
                accomodation.AccomodationStatus = AccomodationStatusEnum.Booked;

                _context.Update(accomodation);

                i++;
            }

            _context.SaveChanges();

            return(RedirectToAction("Details", "Trip", new { id = accomodationInfo.TripId }));
            //return RedirectToAction("a");
        }
Esempio n. 4
0
        public async Task <MealsGetRes> GetMealsDetailsByQRFID(QuoteGetReq request)
        {
            var response = new MealsGetRes();
            List <MealDetails> objMealsProperties = new List <MealDetails>();

            RoutingGetReq req = new RoutingGetReq();

            req.QRFId = request.QRFID;

            var resultQuote = _MongoContext.mQuote.AsQueryable().Where(q => q.QRFID == request.QRFID);

            if (resultQuote != null && resultQuote.Count() > 0)
            {
                var resultPosition = _MongoContext.mPosition.AsQueryable().Where(q => q.QRFID == request.QRFID).FirstOrDefault();
                List <RoutingInfo> lstRoutingInfo = await _quoteRepository.GetQRFRouteDetailsByQRFID(req);

                if (resultPosition != null)
                {
                    var result = resultPosition.Meals;
                    if (result != null && result.Count > 0)
                    {
                        var CityCount = result.GroupBy(m => new { m.CityID }).Select(m => new { m.Key.CityID, DayCount = m.Count() });

                        if ((lstRoutingInfo != null && lstRoutingInfo.Count > 0) && (CityCount != null && CityCount.Count() > 0))
                        {
                            result.ToList().FindAll(f => !lstRoutingInfo.Exists(r => r.ToCityID == f.CityID)).ForEach(c => c.IsDeleted = true);

                            foreach (var item in lstRoutingInfo)
                            {
                                int daycount = CityCount.Where(c => c.CityID == item.ToCityID).Select(c => c.DayCount).FirstOrDefault();
                                if (item.Days > daycount)
                                {
                                    // int i = item.Days - daycount; //5-3=2
                                    for (int j = daycount; j < item.Days; j++)
                                    {
                                        result.Add(new MealDetails {
                                            CityID = item.ToCityID, CityName = item.ToCityName, VenueTypes = new List <VenueTypes>()
                                        });
                                    }
                                }
                                else if (item.Days < daycount)
                                {
                                    int i = daycount - item.Days; //5-3=2
                                    result.Where(r => r.CityID == item.ToCityID).TakeLast(i).ToList().ForEach(m => { m.IsDeleted = true; });
                                }
                            }
                            TimeSpan timeoutprev;
                            foreach (var m in result)
                            {
                                m.SequenceNo = lstRoutingInfo.Where(r => r.ToCityID == m.CityID).Select(t => t.RouteSequence).FirstOrDefault();
                                AccomodationInfo objAccomodationInfo = resultPosition.AccomodationInfo.Where(a => a.StartingFrom == m.DayID && a.IsDeleted == false).FirstOrDefault();
                                if (objAccomodationInfo != null)
                                {
                                    MealDetails md = CheckDefaultMealPlan(m, timeoutprev, objAccomodationInfo, out TimeSpan newtimeout);
                                    m.Breakfast   = md.Breakfast;
                                    m.DefaultPlan = md.DefaultPlan;
                                    m.Dinner      = md.Dinner;
                                    m.Lunch       = md.Lunch;
                                    timeoutprev   = newtimeout;
                                }
                            }
                            result = result.Where(m => m.IsDeleted == false).OrderBy(m => m.SequenceNo).ToList();

                            int k = 1;
                            result.ForEach(m => m.DayID    = "Day " + (k++));
                            response.MealDetails           = result;
                            response.ResponseStatus.Status = "Success";
                        }
                        else if ((lstRoutingInfo != null && lstRoutingInfo.Count > 0) && CityCount.Count() == 0)
                        {
                            mPosition objPosition = AddMealsDetails(objMealsProperties, lstRoutingInfo, request, resultPosition.AccomodationInfo, "i");
                            result = objPosition.Meals;

                            var resultFlag = await _MongoContext.mPosition.UpdateOneAsync(Builders <mPosition> .Filter.Eq("QRFID", request.QRFID),
                                                                                          Builders <mPosition> .Update.Set("Meals", result));

                            response.ResponseStatus.Status       = resultFlag.MatchedCount > 0 ? "Success" : "Failure";
                            response.ResponseStatus.ErrorMessage = resultFlag.MatchedCount > 0 ? "Saved Successfully." : "Meals Details not updated.";
                        }
                        else
                        {
                            TimeSpan timeoutprev;
                            var      agentroute = resultQuote.FirstOrDefault().RoutingInfo.FirstOrDefault();
                            result.ForEach(m =>
                            {
                                m.IsDeleted  = true; m.EditDate = agentroute.EditDate; m.EditUser = request.UserName;
                                m.SequenceNo = lstRoutingInfo.Where(r => r.ToCityID == m.CityID).Select(t => t.RouteSequence).FirstOrDefault();
                                AccomodationInfo objAccomodationInfo = resultPosition.AccomodationInfo.Where(a => a.StartingFrom == m.DayID && a.IsDeleted == false).FirstOrDefault();
                                if (objAccomodationInfo != null)
                                {
                                    MealDetails md = CheckDefaultMealPlan(m, timeoutprev, objAccomodationInfo, out TimeSpan newtimeout);
                                    m.Breakfast    = md.Breakfast;
                                    m.DefaultPlan  = md.DefaultPlan;
                                    m.Dinner       = md.Dinner;
                                    m.Lunch        = md.Lunch;
                                    timeoutprev    = newtimeout;
                                }
                            });

                            UpdateResult resultFlag = await _MongoContext.mPosition.UpdateOneAsync(Builders <mPosition> .Filter.Eq("QRFID", request.QRFID),
                                                                                                   Builders <mPosition> .Update.Set("Meals", result));

                            response.ResponseStatus.Status       = resultFlag.MatchedCount > 0 ? "Success" : "Failure";
                            response.ResponseStatus.ErrorMessage = resultFlag.MatchedCount > 0 ? "Saved Successfully." : "Meals Details not updated.";
                        }
                    }
                    else
                    {
                        UpdateResult resultFlag = null;
                        if (lstRoutingInfo != null && lstRoutingInfo.Count > 0)
                        {
                            mPosition objPosition = AddMealsDetails(objMealsProperties, lstRoutingInfo, request, resultPosition.AccomodationInfo, "i");

                            resultFlag = await _MongoContext.mPosition.UpdateOneAsync(Builders <mPosition> .Filter.Eq("QRFID", request.QRFID),
                                                                                      Builders <mPosition> .Update.Set("Meals", objPosition.Meals));

                            response.MealDetails                 = objPosition.Meals;
                            response.ResponseStatus.Status       = resultFlag.MatchedCount > 0 ? "Success" : "Failure";
                            response.ResponseStatus.ErrorMessage = resultFlag.MatchedCount > 0 ? "Saved Successfully." : "Meals Details not updated.";
                        }
                        else
                        {
                            response.ResponseStatus.ErrorMessage = "No Routing Details found.";
                            response.ResponseStatus.Status       = "Failure";
                        }
                    }
                }
                else
                {
                    if (lstRoutingInfo != null && lstRoutingInfo.Count > 0)
                    {
                        mPosition objPosition = AddMealsDetails(objMealsProperties, lstRoutingInfo, request, resultPosition.AccomodationInfo, "i");

                        await _MongoContext.mPosition.InsertOneAsync(objPosition);

                        response.ResponseStatus.Status = "Success";
                        response.MealDetails           = objPosition.Meals;
                    }
                    else
                    {
                        response.ResponseStatus.ErrorMessage = "No Routing Details found.";
                        response.ResponseStatus.Status       = "Failure";
                    }
                }
            }
            else
            {
                response.ResponseStatus.Status       = "Failure";
                response.ResponseStatus.ErrorMessage = "QRFID is not exists.";
            }
            return(response);
        }
Esempio n. 5
0
        public MealDetails CheckDefaultMealPlan(MealDetails m, TimeSpan timeoutprev, AccomodationInfo objAccomodationInfo, out TimeSpan newtimeout)
        {
            m.DefaultPlan = objAccomodationInfo.MealPlan;
            if (m.DefaultPlan != null && m.DefaultPlan.ToLower() != "nb")
            {
                var hotelid = objAccomodationInfo.HotelID;
                List <ProductAttributes> lstProdAttr = _MongoContext.mProducts.AsQueryable().Where(p => p.VoyagerProduct_Id == hotelid).Select(p => p.ProductAttributes).FirstOrDefault();
                if (lstProdAttr != null && lstProdAttr.Count > 0)
                {
                    List <ProdAttributeValues> lstprodval = lstProdAttr.Where(p => p.AttributeGroupName == "Times").Select(p => p.AttributeValues).FirstOrDefault();
                    if (lstprodval != null && lstprodval.Count > 0)
                    {
                        TimeSpan timein, timeout;

                        string strchkin  = lstprodval.Where(a => a.AttributeName == "Check In").Select(a => a.AttributeValue).FirstOrDefault();
                        string strchkout = lstprodval.Where(a => a.AttributeName == "Check Out").Select(a => a.AttributeValue).FirstOrDefault();
                        TimeSpan.TryParse(strchkin, out timein);
                        TimeSpan.TryParse(strchkout, out timeout);
                        newtimeout = timeout;

                        if (timein != null && timeout != null)
                        {
                            if (m.DefaultPlan.ToLower() == "bb")
                            {
                                bool flag = false;
                                if ((timein >= new TimeSpan(07, 00, 00) && timein <= new TimeSpan(07, 30, 00)) ||
                                    (timeoutprev != null && timeoutprev >= new TimeSpan(07, 30, 00)))
                                {
                                    m.Breakfast = "Included in Hotel";
                                    flag        = true;
                                }
                                if (!flag)
                                {
                                    m.DefaultPlan = "";
                                }
                            }
                            else if (m.DefaultPlan.ToLower() == "hb")
                            {
                                bool flag = false;

                                if ((timein >= new TimeSpan(07, 00, 00) && timein <= new TimeSpan(07, 30, 00)) ||
                                    (timeoutprev != null && timeoutprev >= new TimeSpan(07, 30, 00)))
                                {
                                    m.Breakfast = "Included in Hotel";
                                    flag        = true;
                                }

                                if ((timein >= new TimeSpan(07, 00, 00) && timein <= new TimeSpan(21, 00, 00)) ||
                                    (timeoutprev != null && timeoutprev >= new TimeSpan(21, 00, 00)))
                                {
                                    m.Dinner = "Included in Hotel"; flag = true;
                                }

                                if (!flag)
                                {
                                    m.DefaultPlan = "";
                                }
                            }
                            else if (m.DefaultPlan.ToLower() == "fb")
                            {
                                bool flag = false;

                                if ((timein >= new TimeSpan(07, 00, 00) && timein <= new TimeSpan(07, 30, 00)) ||
                                    (timeoutprev != null && timeoutprev >= new TimeSpan(07, 30, 00)))
                                {
                                    m.Breakfast = "Included in Hotel";
                                    flag        = true;
                                }
                                if ((timein >= new TimeSpan(07, 00, 00) && timein <= new TimeSpan(13, 30, 00)) ||
                                    (timeoutprev != null && timeoutprev >= new TimeSpan(13, 30, 00)))
                                {
                                    m.Lunch = "Included in Hotel"; flag = true;
                                }

                                if ((timein >= new TimeSpan(07, 00, 00) && timein <= new TimeSpan(21, 00, 00)) ||
                                    (timeoutprev != null && timeoutprev >= new TimeSpan(21, 00, 00)))
                                {
                                    m.Dinner = "Included in Hotel"; flag = true;
                                }

                                if (!flag)
                                {
                                    m.DefaultPlan = "";
                                }
                            }

                            newtimeout = timeout;
                        }
                    }
                }
            }
            return(m);
        }