public int SaveSSCC(SSCCEditIntermediate request)
        {
            using (var dbEntity = new BACKUP_SRL_20180613Entities1())
            {
                var isSuccess = dbEntity.API_INSERT_CHANGE(request.SSCC, request.OrderNumber, request.NewOrderNumber, request.OldActor, request.NewActor, request.LoadMessageStatusId, request.UpdateDate,
                                                           request.UpdateUser, request.OldLoadUnitConditionCode, request.NewLoadUnitConditionCode, request.OldQtyRTI, request.ESoftPackingId, request.NewQtyRTI,
                                                           request.DeleteSSCC, request.OldSSCC, request.NewSSCC, request.TRAItemInId, request.SLACode, request.Time, request.Validation, request.OldLoadUnitConditionSubCode,
                                                           request.NewLoadUnitConditionSubCode, request.VoidSSCC, request.OldLoadCarrierEAN, request.NewLoadCarrierEAN);

                return(isSuccess.FirstOrDefault().Value);
            }
        }
        public string EditSSCC(SSCCEditRequest request)
        {
            StringBuilder        message    = new StringBuilder();
            SSCCEditIntermediate requestObj = new SSCCEditIntermediate()
            {
                SSCC                = request.SSCC,
                UpdateDate          = request.UpdateDate,
                UpdateUser          = request.UpdateUser,
                Time                = request.Time,
                LoadMessageStatusId = request.LoadMessageStatusId,
                OrderNumber         = request.OrderNumber
            };

            //To save SSCC number
            if (!string.IsNullOrEmpty(request.NewSSCC))
            {
                requestObj.NewSSCC = request.NewSSCC;
                requestObj.OldSSCC = request.OldSSCC;
                if (SaveSSCC(requestObj) == 0)
                {
                    message.Append(string.Format("Insert failed for new SSCC number {0}", requestObj.NewSSCC));
                }
                requestObj.NewSSCC = null;
                requestObj.OldSSCC = null;
            }

            //To save Actor Origin
            if (request.NewActor.HasValue)
            {
                requestObj.NewActor = request.NewActor;
                requestObj.OldActor = request.OldActor;
                if (SaveSSCC(requestObj) == 0)
                {
                    message.Append("Insert failed for the new actor origin");
                }
                requestObj.NewActor = null;
                requestObj.OldActor = null;
            }

            //To save Order number
            if (!string.IsNullOrEmpty(request.NewOrderNumber))
            {
                //Fetch order id for the order number passed
                using (var dbEntity = new BACKUP_SRL_20180613Entities1())
                {
                    try
                    {
                        request.NewOrderNumberNumeric = dbEntity.REF_ORDER.Where(o => o.ORD_ORDER_NUMBER == request.NewOrderNumber).Select(o => o.ID_ORDER).First();
                    }
                    catch (InvalidOperationException)
                    {
                        message.Append(string.Format("Order with number {0} does not exists in the system", request.NewOrderNumber));
                        message.Append(string.Format("Insert failed for new Order number {0}", requestObj.NewOrderNumber));
                    }
                }

                if (request.NewOrderNumberNumeric.HasValue)
                {
                    requestObj.NewOrderNumber = request.NewOrderNumberNumeric;
                    requestObj.OrderNumber    = request.OrderNumber;
                    if (SaveSSCC(requestObj) == 0)
                    {
                        message.Append(string.Format("Insert failed for new Order number {0}", requestObj.NewOrderNumber));
                    }
                    requestObj.NewOrderNumber = null;
                }
            }

            ///To save RTI quantities
            if (request.RTIQuantities != null && request.RTIQuantities.Any())
            {
                foreach (SSCCEditRTIQty item in request.RTIQuantities)
                {
                    requestObj.NewQtyRTI      = item.NewQtyRTI;
                    requestObj.OldQtyRTI      = item.OldQtyRTI;
                    requestObj.ESoftPackingId = item.ESoftPackingId;
                    if (SaveSSCC(requestObj) == 0)
                    {
                        message.Append(string.Format("Insert failed for new RTI quantity {0} for TRA Code {1}", requestObj.NewQtyRTI, requestObj.ESoftPackingId));
                    }
                    requestObj.NewQtyRTI      = null;
                    requestObj.OldQtyRTI      = null;
                    requestObj.ESoftPackingId = null;
                }
            }
            //To save load carrier
            if (!string.IsNullOrEmpty(request.NewLoadCarrierEAN))
            {
                requestObj.OldLoadCarrierEAN = request.OldLoadCarrierEAN;
                requestObj.NewLoadCarrierEAN = request.NewLoadCarrierEAN;
                if (SaveSSCC(requestObj) == 0)
                {
                    message.Append(string.Format("Insert failed for new load carrier {0}", requestObj.NewLoadCarrierEAN));
                }
                requestObj.OldLoadCarrierEAN = null;
                requestObj.NewLoadCarrierEAN = null;
            }
            //To save anomalies/deviation/Load unit condition code
            if (request.Anomalies != null && request.Anomalies.Any())
            {
                foreach (SSCCEditAnomaly item in request.Anomalies)
                {
                    requestObj.OldLoadUnitConditionCode = item.OldAnomalyCode;
                    requestObj.NewLoadUnitConditionCode = item.NewAnomalyCode;
                    if (SaveSSCC(requestObj) == 0)
                    {
                        message.Append(string.Format("Insert failed for anomaly with code {0}", requestObj.NewLoadUnitConditionCode ?? requestObj.OldLoadUnitConditionCode));
                    }
                }
            }

            return(message.ToString());
        }