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); }
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()); } } }
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"); }
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); }
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); }