Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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)));
        }
Esempio n. 3
0
        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)));
        }
Esempio n. 4
0
        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!"));
        }