public async Task <IActionResult> OnPostAddCommentAsync(ReservationComment newComment) { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.GetUserAsync(User); if (user == null) { return(Page()); } newComment.AppUserId = user.Id; newComment.PostedDate = DateTime.Now; _context.Add(newComment); var reservation = await _context.Reservations.Where(r => r.Id == newComment.ReservationId).FirstOrDefaultAsync(); var notification = new Notification(reservation.EmployeeId, $"/CheckReservation/Details?id={reservation.Id}", (NotiflicationType)1, 0, user.FullName); _context.Add(notification); var successful = await _context.SaveChangesAsync(); if (successful < 0) { return(BadRequest("Nepavyko pridėti komentaro.")); } return(Redirect($"/MakeReservation/Details?id={newComment.ReservationId}")); }
public async Task <IActionResult> OnPostAsync() { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.GetUserAsync(User); if (Reservation.ClientId != user.Id) { return(RedirectToPage("./Index")); } if (Reservation.Status.Id == 4) { var notification = new Notification(Reservation.EmployeeId, $"/CheckReservation/Details?id={Reservation.Id}", (NotiflicationType)0, Reservation.Status.Id); _context.Add(notification); } Reservation.ModifiedBy = user.FullName; Reservation.ModifiedDate = DateTime.Now; _context.Attach(Reservation).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ReservationExists(Reservation.Id)) { return(NotFound()); } else { throw; } } return(RedirectToPage("./Index")); }
public async Task <IActionResult> OnPostReservationAsync() { ModelState.Remove("CityId"); ModelState.Remove("SalonId"); ModelState.Remove("ServiceId2"); ModelState.Remove("ServiceId3"); ModelState.Remove("EstimatedTime"); if (!ModelState.IsValid || StartTime.Value.Minutes % 15 != 0) { ViewData["Cities"] = new SelectList(_categoryService.GetCities(), nameof(City.Id), nameof(City.Name)); ViewData["Salons"] = new SelectList(_categoryService.GetSalons(CityId).Select(r => new { r.Id, FullName = r.Name + " (" + r.Address + ")", r.City.Name }), nameof(Models.Salon.Id), nameof(Models.Salon.FullName), null, nameof(Models.Salon.City.Name)); ViewData["EmployeeId"] = new SelectList(_categoryService.GetEmployees(SalonId), nameof(Employee.Id), nameof(Employee.FullName)); ViewData["ServiceName"] = new SelectList(_categoryService.GetServices(Reservation.EmployeeId), nameof(Service.Id), nameof(Service.FullName)); ViewData["ServiceName2"] = new SelectList(_categoryService.GetServices2(Reservation.EmployeeId, ServiceId1), nameof(Service.Id), nameof(Service.FullName)); ViewData["ServiceName3"] = new SelectList(_categoryService.GetServices3(Reservation.EmployeeId, ServiceId1, ServiceId2), nameof(Service.Id), nameof(Service.FullName)); return(Page()); } ServiceReservation.ServiceId = ServiceId1; Service = await _context.Services.FindAsync(ServiceReservation.ServiceId); if (!Tools.Comparer.IsDefaultValue(ServiceId2)) { ServiceReservation2.ServiceId = ServiceId2; Service2 = await _context.Services.FindAsync(ServiceReservation2.ServiceId); } if (!Tools.Comparer.IsDefaultValue(ServiceId3)) { ServiceReservation3.ServiceId = ServiceId3; Service3 = await _context.Services.FindAsync(ServiceReservation3.ServiceId); } Reservation.Start = StartDate.Value.Date + StartTime.Value; Reservation.End = Reservation.Start.AddMinutes(Service.EstimatedTime + Service2.EstimatedTime + Service3.EstimatedTime); var user = await _userManager.GetUserAsync(User); Reservation.ClientId = user.Id; TimeZoneInfo systemTimeZone = TimeZoneInfo.Local; Reservation.CreatedDate = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, systemTimeZone); // DateTime.UtcNow; Reservation.Status = _context.ReservationStatuses.Find(1); if (ReservationComment.Comment != null) { ReservationComment.PostedDate = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, systemTimeZone); ReservationComment.AppUserId = user.Id; Reservation.ReservationComment.Add(ReservationComment); } Reservation.ServiceReservation.Add(ServiceReservation); if (!Tools.Comparer.IsDefaultValue(ServiceReservation2.ServiceId)) { Reservation.ServiceReservation.Add(ServiceReservation2); } if (!Tools.Comparer.IsDefaultValue(ServiceReservation3.ServiceId)) { Reservation.ServiceReservation.Add(ServiceReservation3); } //verify that time wasn't taken while client was picking times var listOfServiceId = new List <int> { ServiceId1, ServiceId2, ServiceId3 }; int serviceEstimatedTime = _context.Services.Where(r => listOfServiceId.Contains(r.Id)).Sum(r => r.EstimatedTime); IList <sp_LastTimeCheck> ssp_LastTimeCheck = await _context.sp_LastTimeChecks.FromSqlRaw("EXECUTE dbo.LastVerifyEmployeeAvailableTime " + "@EmployeeId = {0}, @ServiceDate = {1}, @ServiceEstimatedTime = {2}, @ProvidedTime = {3}", Reservation.EmployeeId, StartDate.Value.Date, serviceEstimatedTime, StartTime.Value).ToListAsync(); bool isAvailable = ssp_LastTimeCheck.Where(r => r.Id == 1).Select(r => r.Boolean).First(); if (isAvailable && Reservation.Start > TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, systemTimeZone)) { _context.Add(Reservation); await _context.SaveChangesAsync(); return(RedirectToPage("./Index")); } else { ViewData["Cities"] = new SelectList(_categoryService.GetCities(), nameof(City.Id), nameof(City.Name)); ViewData["Salons"] = new SelectList(_categoryService.GetSalons(CityId), nameof(Models.Salon.Id), nameof(Models.Salon.FullName), null, nameof(Models.Salon.City.Name)); ViewData["EmployeeId"] = new SelectList(_categoryService.GetEmployees(SalonId), nameof(Employee.Id), nameof(Employee.FullName)); ViewData["ServiceName"] = new SelectList(_categoryService.GetServices(Reservation.EmployeeId), nameof(Service.Id), nameof(Service.FullName)); ViewData["ServiceName2"] = new SelectList(_categoryService.GetServices2(Reservation.EmployeeId, ServiceId1), nameof(Service.Id), nameof(Service.FullName)); ViewData["ServiceName3"] = new SelectList(_categoryService.GetServices3(Reservation.EmployeeId, ServiceId1, ServiceId2), nameof(Service.Id), nameof(Service.FullName)); return(Page()); } }