Exemple #1
0
        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}"));
        }
Exemple #2
0
        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"));
        }
Exemple #3
0
        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());
            }
        }