public void SaveServiceRequestDetails(iffsServiceRequest serviceRequestHeader, IList <string> serviceRequestDetails, string action) { var serviceRequestHeaderId = serviceRequestHeader.Id; if (action == "Add") { for (var i = 0; i < serviceRequestDetails.Count(); i++) { var row = serviceRequestDetails[i].Split(new[] { ':' }); var operationTypeId = int.Parse(row[0]); int? commodityTypeId = int.Parse(row[1]); decimal volume = Convert.ToDecimal(row[2].ToString()); decimal weight = Convert.ToDecimal(row[3].ToString()); var pcs = row[4].ToString(); var containerTypeId = int.Parse(row[5]); var poe = row[6].ToString(); var pod = row[7].ToString(); var description = row[8] != null && row[8] != "undefined" ? row[8].ToString() : ""; var tareWeight = row[9] != null && row[9] != "undefined" ? row[9].ToString() : ""; var sr = new iffsServiceRequestDetail { HeaderId = serviceRequestHeaderId, OperationTypeId = operationTypeId, CommodityTypeId = commodityTypeId == 0 ? null : commodityTypeId, Volume = volume, Weight = weight, Pcs = pcs, ContainerTypeId = containerTypeId, POE = poe, POD = pod, Description = description, TareWeight = tareWeight }; _serviceRequestDetails.AddNew(sr); _context.SaveChanges(); } } else if (action == "Edit") { _serviceRequestDetails.Delete(s => s.HeaderId == serviceRequestHeaderId); for (int i = 0; i < serviceRequestDetails.Count(); i++) { var row = serviceRequestDetails[i].Split(new[] { ':' }); var operationTypeId = int.Parse(row[0]); int? commodityTypeId = int.Parse(row[1]); decimal volume = Convert.ToDecimal(row[2].ToString()); decimal weight = Convert.ToDecimal(row[3].ToString()); var pcs = row[4].ToString(); var containerTypeId = int.Parse(row[5]); var poe = row[6].ToString(); var pod = row[7].ToString(); var description = row[8] != null && row[8] != "undefined" ? row[8].ToString() : ""; var tareWeight = row[9] != null && row[9] != "undefined" ? row[9].ToString() : ""; var sr = new iffsServiceRequestDetail { HeaderId = serviceRequestHeaderId, OperationTypeId = operationTypeId, CommodityTypeId = commodityTypeId == 0 ? null : commodityTypeId, Volume = volume, Weight = weight, Pcs = pcs, ContainerTypeId = containerTypeId, POE = poe, POD = pod, Description = description, TareWeight = tareWeight }; _serviceRequestDetails.AddNew(sr); _context.SaveChanges(); } } }
public ActionResult Save(iffsServiceRequest serviceRequest) { using ( var transaction = new TransactionScope((TransactionScopeOption.Required), new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) { _context.Database.Connection.Open(); _context.Database.CommandTimeout = int.MaxValue; try { var hashtable = JsonConvert.DeserializeObject <Hashtable>(Request.Params["record"]); var voucherDetailsString = hashtable["serviceRequestDetails"].ToString(); voucherDetailsString = voucherDetailsString.Remove(voucherDetailsString.Length - 1); var voucherDetails = voucherDetailsString.Split(new[] { ';' }); string action = hashtable["action"].ToString(); if (Request.Params["CanBeHandled"] != null) { serviceRequest.CanBeHandled = true; } if (Request.Params["HasAgreement"] != null) { serviceRequest.HasAgreement = true; } if (serviceRequest.Id.Equals(0)) { var currentUser = Session[Constants.CurrentUser] as coreUser; if (currentUser != null) { if (currentUser.EmployeeId != null) { serviceRequest.PreparedById = (int)currentUser.EmployeeId; serviceRequest.PreparedDate = DateTime.Now; } } serviceRequest.RequestNo = GetDocumentNumber("Service Request"); _serviceRequest.AddNew(serviceRequest); UpdateDocumentNumber("Service Request"); } else { _serviceRequest.Edit(serviceRequest); } SaveServiceRequestDetails(serviceRequest, voucherDetails.ToList(), action); _context.SaveChanges(); transaction.Complete(); return(this.Json(new { success = true, data = "Service Request has been saved Successfully!", Id = serviceRequest.Id })); } catch (Exception exception) { return (this.Json( new { success = false, data = exception.InnerException != null ? exception.InnerException.Message : exception.Message })); } } }