//-> EditLineItem private async Task <List <tblSaleOrderItem> > EditLineItem(int mastetID, SaleOrderEditDTO editDTO) { var list = new List <tblSaleOrderItem>(); if (editDTO.items != null) { foreach (var item in editDTO.items) { var record = new tblSaleOrderItem(); if (item.id == null) { record = (tblSaleOrderItem)MappingHelper.MapDTOToDBClass <SaleOrderItemEditDTO, tblSaleOrderItem>(item, new tblSaleOrderItem()); record.createdDate = DateTime.Now; } else { record = await db.tblSaleOrderItems.FirstOrDefaultAsync(x => x.deleted == null && x.id == item.id); record = (tblSaleOrderItem)MappingHelper.MapDTOToDBClass <SaleOrderItemEditDTO, tblSaleOrderItem>(item, record); record.updatedDate = DateTime.Now; } record.total = record.quantity * record.price; record.saleOrderID = mastetID; if (item.id == null) { db.tblSaleOrderItems.Add(record); } await db.SaveChangesAsync(); list.Add(record); } } if (!string.IsNullOrEmpty(editDTO.deleteLineItemID)) { var ids = editDTO.deleteLineItemID.Split(','); foreach (var id in ids) { var itemID = int.Parse(id); var item = await db.tblSaleOrderItems.FirstOrDefaultAsync(x => x.deleted == null && x.id == itemID); if (item != null) { item.deleted = 1; await db.SaveChangesAsync(); } } } return(list); }
public async Task <JsonResult> Edit(SaleOrderEditDTO editDTO) { try { if (!ModelState.IsValid) { throw new HttpException((int)HttpStatusCode.BadRequest, ConstantHelper.KEY_IN_REQUIRED_FIELD); } Response.StatusCode = 200; return(Json(await handler.Edit(editDTO), JsonRequestBehavior.AllowGet)); } catch (HttpException) { return(Json(ConstantHelper.ERROR, JsonRequestBehavior.AllowGet)); } }
//-> Save public async Task <SaleOrderViewDTO> Edit(SaleOrderEditDTO editDTO) { using (var transaction = db.Database.BeginTransaction()) { try { editDTO = StringHelper.TrimStringProperties(editDTO); editDTO.date = editDTO.date.ToDBDate(); editDTO.requiredDate = editDTO.requiredDate.ToDBDate(); var record = await db.tblSaleOrders.FirstOrDefaultAsync(r => r.deleted == null && r.id == editDTO.id); if (record == null) { throw new HttpException((int)HttpStatusCode.NotFound, "NotFound"); } editDTO.updatedDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"); record = (tblSaleOrder)MappingHelper.MapDTOToDBClass <SaleOrderEditDTO, tblSaleOrder>(editDTO, record); record.updatedDate = DateTime.Now; var session = HttpContext.Current.Session; UserViewDTO user = (UserViewDTO)session["user"]; if (user != null) { record.updatedBy = user.id; } record.slor_LockBy = null; record.slor_LockOn = null; var lineItems = await EditLineItem(record.id, editDTO); record.total = lineItems.Sum(item => item.total); await db.SaveChangesAsync(); transaction.Commit(); return(await SelectByID(record.id)); } catch (Exception ex) { transaction.Rollback(); throw new Exception(ex.Message); } } }