Example #1
0
        public async Task <IActionResult> NhapHang(ImportBill model, IEnumerable <ImportBillDetail> lstModel)
        {
            HttpRequest cookie     = _services.GetRequiredService <IHttpContextAccessor>()?.HttpContext.Request;
            string      customerId = SecurityManager.getUserId(cookie.Cookies[SecurityManager._securityToken]);

            model.Amount        = 0;
            model.TotalValue    = 0;
            ViewBag.MaNCC       = _iSupplierRepository.All;
            ViewBag.ListSanPham = _iProductRepository.All;
            // Kiểm tra dữ liệu đầu vào bằng javascript hay bên metadata đều được
            // Phải ktra để khớp với kiểu dữ liệu của database
            await _importRepository.AddAsync(model);

            await _importRepository.SaveAsync(RequestContext);

            //Gán đã xóa = false
            // SaveChanges lần đầu để  sinh ra mã phiếu nhập gán cho lstChiTietPhieuNhap
            var importBillDetails = lstModel.ToList();

            foreach (var item in importBillDetails)
            {
                // Cập nhật số lượng tồn
                // vì sản phẩm trong lstModel chắc chắn có nên k tạo new SanPham
                var sp = _iProductRepository.All.ToList().Single(n => n.Id == item.IdProduct);
                sp.BasketCount += item.Amount.GetValueOrDefault();
                // Gán mã phiếu nhập cho từng chi tiết phiếu nhập
                item.IdImport = model.IdImport;
            }

            foreach (var item in importBillDetails)
            {
                await _importDetailRepository.AddAsync(item);
            }
            await _importDetailRepository.SaveAsync(RequestContext);

            model.RefreshTotalValue();
            model.StaffId = customerId;
            _importRepository.UpdateAsync(model);
            await _importRepository.SaveAsync(RequestContext);

            TempData["messages"] = "Nhập hàng thành công";
            return(RedirectToAction("Index"));
        }
        public async Task <JsonResult> DeleteImport(int id)
        {
            try
            {
                var listdetailId = _importDetailRepository.All.Where(x => x.IdImport == id).ToList();
                foreach (var i in listdetailId)
                {
                    _importDetailRepository.Delete(i);
                    var sp = _productRepository.All.ToList().Single(n => n.Id == i.IdProduct);
                    sp.BasketCount -= i.Amount.GetValueOrDefault();
                    _productRepository.UpdateAsync(sp);
                }

                await _productRepository.SaveAsync(requestContext : RequestContext);

                await _importDetailRepository.SaveAsync(RequestContext);

                _importRepository.Delete(id);
                await _importRepository.SaveAsync(RequestContext);

                return(Json(new
                {
                    isDeleted = true,
                    html = Helper
                           .RenderRazorViewToString(this, "_ViewListImports", await _importRepository.All.ToListAsync())
                }));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return(Json(new
                {
                    isDeleted = false,
                    html = Helper
                           .RenderRazorViewToString(this, "_ViewListImports", await _importRepository.All.ToListAsync())
                }));
            }
        }