public async Task <CancelRequestImportProductResult> CancelRequestAsync( RequestImportProduct requestImportProduct) { /** Only cancel a request when its status is processing */ if (requestImportProduct.Status != RequestImportProductStatus.Processing) { return(new CancelRequestImportProductResult { IsSuccess = false, Errors = new List <string>() { "Chỉ được phép huỷ yêu cầu nhập hàng đang trong quá trình xử lý (Processing)" } }); } requestImportProduct.Status = RequestImportProductStatus.Canceled; _context.RequestImportProducts .Update(requestImportProduct); var updated = await _context.SaveChangesAsync(); return(new CancelRequestImportProductResult { IsSuccess = true }); }
public async Task <bool> UpdateAsync(RequestImportProduct requestImportProduct) { _context.RequestImportProducts.Update(requestImportProduct); var updated = await _context.SaveChangesAsync(); return(updated > 0); }
public async Task ChangeStatusOfRequestImportProductToSucceededWhenImportEnough( ImportBill importBill, RequestImportProduct requestImportProduct ) { bool isRequestImportProductDone = await IsImportProductEnough( importBill.RequestImportProductId, requestImportProduct.RequestImportDetails); if (isRequestImportProductDone) { requestImportProduct.Status = RequestImportProductStatus.Succeeded; _context.RequestImportProducts.Update(requestImportProduct); var requestImportProductUpdated = await _context.SaveChangesAsync(); if (!(requestImportProductUpdated > 0)) { throw new Exception("Tạo hoá đơn nhập hàng bị lỗi, xin thử lại!"); } } }
public async Task <CreateRequestImportProductResult> CreateAsync( IEnumerable <RequestImportDetail> requestImportDetails, int requestedUserId) { var admin = await _context.Admins .SingleOrDefaultAsync(a => a.UserId == requestedUserId); RequestImportProduct requestImportProduct = new RequestImportProduct { CreatedBy = admin.Id, CreatedAt = DateTime.UtcNow, IsDeleted = false, Status = RequestImportProductStatus.Processing }; using (var transaction = _context.Database.BeginTransaction()) { try { /** Create request import product */ await _context.RequestImportProducts .AddAsync(requestImportProduct); var requestImportProductCreated = await _context.SaveChangesAsync(); if (!(requestImportProductCreated > 0)) { transaction.Dispose(); } /** Create request import details */ // add created RequestImportProduct's Id to each request import detail // set the QuantityLeft = the request Quantity because the request is new requestImportDetails = requestImportDetails .Select(x => { x.RequestImportProductId = requestImportProduct.Id; x.QuantityLeft = x.Quantity; return(x); }) .ToList(); // make sure all product tier in request import detail are existed bool areProductTiersInRequestValid = await CheckProductTiersInRequestDetailsAreExistedOrNot( requestImportDetails); if (!areProductTiersInRequestValid) { transaction.Dispose(); throw new Exception("Sản phẩm cần nhập hàng không tồn tại"); } await _context.RequestImportDetails.AddRangeAsync( requestImportDetails ); var requestDetailsCreated = await _context.SaveChangesAsync(); if (!(requestDetailsCreated > 0)) { transaction.Dispose(); throw new Exception( "Tạo yêu cầu nhập hàng không thành công, vui lòng thử lại" ); } await transaction.CommitAsync(); } catch (System.Exception e) { return(new CreateRequestImportProductResult { IsSuccess = false, Errors = new[] { e.Message } }); } } return(new CreateRequestImportProductResult { IsSuccess = true, RequestImportProduct = requestImportProduct }); }