public async Task <IActionResult> Confirm([Bind("RCC, LocalCode, ClientId")] Confirmation item) { try { _batch.Confirmations.Add(item); _context.Entry(_batch).State = EntityState.Modified; await _context.SaveChangesAsync(); try { Invoice invoice = await CreateInvoice(item); _batch.Invoices.Add(invoice); _context.Entry(_batch).State = EntityState.Modified; await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Get), new { id = invoice.Id })); } catch (NullReferenceException e) { return(View("Error", $"Vui lòng xác nhận trước khi tạo hóa đơn. [Error on: {e.Message}]")); } } catch (DbUpdateConcurrencyException e) { return(View("Error", e.Message)); } }
public async Task <IActionResult> Start(int Id) { var batches = await _context.Batch.Include(e => e.Storage).Where(e => true).ToListAsync(); var batch = batches.FirstOrDefault(e => e.Id == Id); if (batch == null) { return(NotFound($"cannot find batch with id {Id}")); } var runningBatches = await _context.Batch.Where(e => e.Id != Id && e.IsRunning).Select(e => e.Id).ToListAsync(); if (runningBatches != null) { if (runningBatches.Count > 0) { return(NotFound($"cannot start other batch, only one batch is allowed to run at a time {string.Join(" ", runningBatches)}!")); } } batch.Start(); _context.Entry(batch).State = EntityState.Modified; await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> Assign() { if (!Available) { throw new Exception("reservation codes aren't available!"); } var clients = await _context.Client.Where(e => e.IsValid).ToListAsync(); foreach (var item in clients) { var codes = Generate(item.NOProduct * 2); foreach (var code in codes) { _context.RCode.Add(code); } foreach (var code in codes) { item.Codes.Add(code); } _context.Entry(item).State = EntityState.Modified; } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Client))); }
public async Task <IActionResult> Create([Bind("ApartmentCode, Cmnd, PhoneNumber, RCode, Customer")] Reserved r) { if (ModelState.IsValid) { ViewBag.code = r.ApartmentCode; // var recaptcha = await _recaptcha.Validate(Request); // if (!recaptcha.success) // { // ViewBag.msg = "Sai mã captcha!"; // return View("Proceed"); // } var apartment = _batch.GetApartment(r.ApartmentCode); if (apartment == null) { return(View("Error", $"Mã căn hộ không hợp lệ {r.ApartmentCode}")); } if (!IsAvailable(apartment.LocalCode)) { return(View("Error", "Căn hộ đã được đặt mua!")); } var code = _batch.GetCode(r.RCode); r.Date = DateTime.Now.Date; var numberOfReserved = ReadNumberOfReserved(r.ApartmentCode); r.CC = numberOfReserved + 1; r.RCC = apartment.GlobalCode + "-" + GenerateCode() + "-" + r.CC.ToString(); var unique = _batch.Reservations.FirstOrDefault(e => e.RCC == r.RCC); do { r.RCC = apartment.GlobalCode + "-" + GenerateCode() + "-" + r.CC.ToString(); unique = _batch.Reservations.FirstOrDefault(e => e.RCC == r.RCC); } while (unique != null); _batch.Reservations.Add(r); code.IsUsed = true; _context.Entry(code).State = EntityState.Modified; _context.Entry(apartment).State = EntityState.Modified; _context.Entry(_batch).State = EntityState.Modified; await _context.SaveChangesAsync(); ViewBag.cc = r.CC; ViewBag.date = r.Date.Day.ToString() + "-" + r.Date.Month.ToString() + "-" + r.Date.Year.ToString(); return(RedirectToAction(nameof(Get), new { confirmCode = r.RCC })); } return(View("Error", "Hệ thống xảy ra lỗi, vui lòng thử lại!")); }