Пример #1
0
        public async Task <IActionResult> Edit(BookingViewModel model)
        {
            if (!HasPermission("EDIT_BOOKINGS"))
            {
                return(Unauthorized());
            }

            if (ModelState.IsValid)
            {
                var booking = await _context.Bookings
                              .Include(b => b.Invoice)
                              .Include(b => b.Package)
                              .Include(b => b.Package.PackageType)
                              .SingleAsync(m => m.Id == model.Id);

                booking = model.UpdateEntity(booking);

                if (booking.Invoice.Status == InvoiceStatus.NotIssued)
                {
                    booking.Invoice.Status = InvoiceStatus.Pending;
                }

                if (booking.Invoice.AmountPaid >= booking.Invoice.Total)
                {
                    booking.Invoice.Status    = InvoiceStatus.Paid;
                    booking.Invoice.AmountDue = 0;
                }

                _context.Update(booking);

                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            ViewData["LocationId"]    = new SelectList(_context.Locations, "Id", "Name");
            ViewData["ServiceId"]     = new SelectList(_context.Services, "Id", "Name", model.ServiceId);
            ViewData["PackageTypeId"] = new SelectList(_context.PackageTypes, "Id", "Name");

            return(View(model));
        }