public EAMRequestModel MapDirectBookingDetailToShipmentRequestDto(DirectBookingShipmentDraftDetail directBookingDetail)
        {
            EAMRequestModel eamRequest = new EAMRequestModel()
            {
                ShipperAddress1       = directBookingDetail.ShipFrom.Address,
                ShipperAddress2       = directBookingDetail.ShipFrom.Address2,
                ShipperAddress3       = "",
                ShipperContact        = string.Concat(directBookingDetail.ShipFrom.FirstName + " ", directBookingDetail.ShipFrom.LastName),
                ShipperCompany        = string.IsNullOrWhiteSpace(directBookingDetail.ShipFrom.CompanyName) ? string.Concat(directBookingDetail.ShipFrom.FirstName + " ", directBookingDetail.ShipFrom.LastName) : directBookingDetail.ShipFrom.CompanyName,
                ShipperCountry        = directBookingDetail.ShipFrom.Country.Code2,
                ShipperPostcode       = string.IsNullOrEmpty(directBookingDetail.ShipFrom.PostCode) ? "" : directBookingDetail.ShipFrom.PostCode,
                ShipperTelephone      = directBookingDetail.ShipFrom.Phone,
                ShipperTown           = string.IsNullOrEmpty(directBookingDetail.ShipFrom.City) ? "" : directBookingDetail.ShipFrom.City,
                Account               = "",
                Password              = "",
                CustomerTransactionId = directBookingDetail.FrayteNumber,
                Hawb        = directBookingDetail.FrayteNumber,
                Service     = directBookingDetail.CustomerRateCard.NetworkCode,
                Mawb        = "",
                Date        = directBookingDetail.ReferenceDetail.CollectionDate.Value.ToString("dd/MM/yyyy"),
                Company     = string.IsNullOrWhiteSpace(directBookingDetail.ShipTo.CompanyName) ? string.Concat(directBookingDetail.ShipTo.FirstName + " ", directBookingDetail.ShipTo.LastName) : directBookingDetail.ShipTo.CompanyName,
                Contact     = string.Concat(directBookingDetail.ShipTo.FirstName + " ", directBookingDetail.ShipTo.LastName),
                Address1    = directBookingDetail.ShipTo.Address,
                Address2    = directBookingDetail.ShipTo.Address2,
                Address3    = "",
                Town        = string.IsNullOrEmpty(directBookingDetail.ShipTo.City) ? "" : directBookingDetail.ShipTo.City,
                Country     = directBookingDetail.ShipTo.Country.Code2,
                Postcode    = string.IsNullOrEmpty(directBookingDetail.ShipTo.PostCode) ? "" : directBookingDetail.ShipTo.PostCode,
                telephone   = directBookingDetail.ShipTo.Phone,
                noOfPieces  = directBookingDetail.Packages.Sum(t => t.CartoonValue).ToString(),
                Weight      = directBookingDetail.CustomerRateCard.Weight,
                DoxNonDox   = directBookingDetail.ParcelType.ParcelType == "Parcel" ? "NDX" : "DOX",
                Description = string.Join("-", directBookingDetail.Packages.Select(x => x.Content.ToString()).ToArray()) + "-" + directBookingDetail.ReferenceDetail.Reference1,
                Value       = directBookingDetail.Packages.Sum(t => t.Value).ToString(),
                Currency    = directBookingDetail.Currency.CurrencyCode,
                Agent       = "",
                Notes       = "JUST A TEST"
            };

            if (directBookingDetail.CustomerRateCard.CourierName == FrayteCourierCompany.EAMTNT)
            {
                eamRequest.Agent = "TNT economy service";
            }
            else if (directBookingDetail.CustomerRateCard.CourierName == FrayteCourierCompany.EAMDHL)
            {
                eamRequest.Agent = "DHL express service";
            }
            else if (directBookingDetail.CustomerRateCard.CourierName == FrayteCourierCompany.EAMFedEx)
            {
                eamRequest.Agent = "Fedex Economy service";
            }
            return(eamRequest);
        }
        public EAMRequestModel MapExpressBookingDetailToShipmentRequestDto(ExpressShipmentModel expressBookingDetail)
        {
            EAMRequestModel eamRequest = new EAMRequestModel()
            {
                ShipperAddress1       = expressBookingDetail.ShipFrom.Address,
                ShipperAddress2       = expressBookingDetail.ShipFrom.Address2,
                ShipperAddress3       = "",
                ShipperContact        = string.Concat(expressBookingDetail.ShipFrom.FirstName + " ", expressBookingDetail.ShipFrom.LastName),
                ShipperCompany        = string.IsNullOrWhiteSpace(expressBookingDetail.ShipFrom.CompanyName) ? string.Concat(expressBookingDetail.ShipFrom.FirstName + " ", expressBookingDetail.ShipFrom.LastName) : expressBookingDetail.ShipFrom.CompanyName,
                ShipperCountry        = expressBookingDetail.ShipFrom.Country.Code2,
                ShipperPostcode       = string.IsNullOrEmpty(expressBookingDetail.ShipFrom.PostCode) ? "" : expressBookingDetail.ShipFrom.PostCode,
                ShipperTelephone      = expressBookingDetail.ShipFrom.Phone,
                ShipperTown           = string.IsNullOrEmpty(expressBookingDetail.ShipFrom.City) ? "" : expressBookingDetail.ShipFrom.City,
                Account               = "",
                Password              = "",
                CustomerTransactionId = expressBookingDetail.AWBNumber.Replace(" ", ""),
                Hawb        = expressBookingDetail.AWBNumber.Replace(" ", ""),
                Service     = expressBookingDetail.Service.NetworkCode,
                Mawb        = "",
                Date        = DateTime.UtcNow.ToString("dd/MM/yyyy"),
                Company     = string.IsNullOrWhiteSpace(expressBookingDetail.ShipTo.CompanyName) ? string.Concat(expressBookingDetail.ShipTo.FirstName + " ", expressBookingDetail.ShipTo.LastName) : expressBookingDetail.ShipTo.CompanyName,
                Contact     = string.Concat(expressBookingDetail.ShipTo.FirstName + " ", expressBookingDetail.ShipTo.LastName),
                Address1    = expressBookingDetail.ShipTo.Address,
                Address2    = expressBookingDetail.ShipTo.Address2,
                Address3    = "",
                Town        = string.IsNullOrEmpty(expressBookingDetail.ShipTo.City) ? "" : expressBookingDetail.ShipTo.City,
                Country     = expressBookingDetail.ShipTo.Country.Code2,
                Postcode    = string.IsNullOrEmpty(expressBookingDetail.ShipTo.PostCode) ? "" : expressBookingDetail.ShipTo.PostCode,
                telephone   = expressBookingDetail.ShipTo.Phone,
                noOfPieces  = expressBookingDetail.Packages.Sum(t => t.CartonValue).ToString(),
                Weight      = expressBookingDetail.Service.ActualWeight,
                DoxNonDox   = expressBookingDetail.ParcelType.ParcelType == "Parcel" ? "NDX" : "DOX",
                Description = string.Join("-", expressBookingDetail.Packages.Select(x => x.Content.ToString()).ToArray()) + "-" + expressBookingDetail.ShipmentReference,
                Value       = expressBookingDetail.Packages.Sum(t => t.Value).ToString(),
                Currency    = expressBookingDetail.DeclaredCurrency.CurrencyCode,
                Agent       = "",
                Notes       = "JUST A TEST"
            };

            if (expressBookingDetail.Service.RateType == FrayteCourierCompany.EAMTNT)
            {
                eamRequest.Agent = "TNT economy service";
            }
            else if (expressBookingDetail.Service.RateType == FrayteCourierCompany.EAMDHL)
            {
                eamRequest.Agent = "DHL express service";
            }
            else if (expressBookingDetail.Service.RateType == FrayteCourierCompany.EAMFedEx)
            {
                eamRequest.Agent = "Fedex Economy service";
            }
            return(eamRequest);
        }
        public string CreateXMLForEAM(EAMRequestModel eamRequest)
        {
            string xmlPath = string.Empty;

            try
            {
                XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();

                xmlWriterSettings.Encoding = new UTF8Encoding(true);

                xmlWriterSettings.ConformanceLevel = ConformanceLevel.Document;

                xmlWriterSettings.Indent = true;
                var logisticIntegration = UtilityRepository.getLogisticIntegration(UtilityRepository.GetOperationZone().OperationZoneId, AppSettings.ApplicationMode, FrayteIntegration.EAM);

                eamRequest.Account  = logisticIntegration.UserName;
                eamRequest.Password = logisticIntegration.Password;

                //xmlPath = It will be the path where xml will saved
                if (AppSettings.LabelSave == "")
                {
                    xmlPath = AppSettings.WebApiPath + "/UploadFiles/PDFGenerator/HTMLFile";
                }
                else
                {
                    if (AppSettings.ShipmentCreatedFrom == "BATCH")
                    {
                        xmlPath = AppSettings.WebApiPath + "/UploadFiles/PDFGenerator/HTMLFile";
                    }
                    else
                    {
                        // _log.Error("else section BATCH");
                        xmlPath = HttpContext.Current.Server.MapPath("~/UploadFiles/PDFGenerator/HTMLFile");
                    }
                }

                if (!Directory.Exists(xmlPath))
                {
                    Directory.CreateDirectory(xmlPath);
                }

                xmlPath = xmlPath + "/EAMShipment.xml";
                if (File.Exists(xmlPath))
                {
                    File.Delete(xmlPath);
                }

                using (var xmlWriter = XmlWriter.Create(xmlPath))
                {
                    xmlWriter.WriteStartDocument();
                    if (logisticIntegration != null)
                    {
                        xmlWriter.WriteStartElement("ProcessShipmentRequest");

                        xmlWriter.WriteStartElement("WebAuthenticationDetail");

                        xmlWriter.WriteStartElement("UserCredential");

                        xmlWriter.WriteStartElement("Account");
                        xmlWriter.WriteString(eamRequest.Account);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Password");
                        xmlWriter.WriteString(eamRequest.Password);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("TransactionDetail");

                        xmlWriter.WriteStartElement("CustomerTransactionId");
                        xmlWriter.WriteString(eamRequest.CustomerTransactionId);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("RequestedShipment");

                        xmlWriter.WriteStartElement("ShipperCompany");
                        xmlWriter.WriteString(eamRequest.ShipperCompany);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperContact");
                        xmlWriter.WriteString(eamRequest.ShipperContact);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperAddress1");
                        xmlWriter.WriteString(eamRequest.ShipperAddress1);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperAddress2");
                        xmlWriter.WriteString(string.IsNullOrEmpty(eamRequest.ShipperAddress2) ? "." : eamRequest.ShipperAddress2);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperAddress3");
                        xmlWriter.WriteString(eamRequest.ShipperAddress3);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperTown");
                        xmlWriter.WriteString(eamRequest.ShipperTown);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperCountry");
                        xmlWriter.WriteString(eamRequest.ShipperCountry);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperPostcode");
                        xmlWriter.WriteString(string.IsNullOrEmpty(eamRequest.ShipperPostcode) ? "" : eamRequest.ShipperPostcode.ToString());
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("ShipperTelephone");
                        xmlWriter.WriteString(eamRequest.ShipperTelephone);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Hawb");
                        xmlWriter.WriteString(eamRequest.Hawb);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Service");
                        xmlWriter.WriteString(eamRequest.Service);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Mawb");
                        xmlWriter.WriteString(eamRequest.Mawb);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Date");
                        xmlWriter.WriteString(eamRequest.Date.ToString());
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Company");
                        xmlWriter.WriteString(eamRequest.Company);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Contact");
                        xmlWriter.WriteString(eamRequest.Contact);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Address1");
                        xmlWriter.WriteString(eamRequest.Address1);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Address2");
                        xmlWriter.WriteString(string.IsNullOrEmpty(eamRequest.Address2) ? "'.'" : eamRequest.Address2);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Address3");
                        xmlWriter.WriteString(eamRequest.Address3);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Town");
                        xmlWriter.WriteString(eamRequest.Town);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Country");
                        xmlWriter.WriteString(eamRequest.Country);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Postcode");
                        xmlWriter.WriteString(string.IsNullOrEmpty(eamRequest.Postcode) ? "" : eamRequest.Postcode);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("telephone");
                        xmlWriter.WriteString(eamRequest.telephone.ToString());
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("noOfPieces");
                        xmlWriter.WriteString(eamRequest.noOfPieces);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Weight");
                        xmlWriter.WriteString(eamRequest.Weight.ToString());
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("DoxNonDox");
                        xmlWriter.WriteString(eamRequest.DoxNonDox.ToString());
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Description");
                        xmlWriter.WriteString(eamRequest.Description);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Value");
                        xmlWriter.WriteString(eamRequest.Value);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Weight");
                        xmlWriter.WriteString(eamRequest.Weight.ToString());
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Currency");
                        xmlWriter.WriteString(eamRequest.Currency);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Agent");
                        xmlWriter.WriteString(eamRequest.Agent);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteStartElement("Notes");
                        xmlWriter.WriteString(eamRequest.Notes);
                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteEndElement();

                        xmlWriter.WriteEndElement();
                    }
                    return(xmlPath);
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }