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
                    }));
                }
            }
        }