public List <TradelaneBookingCoLoadFormModel> ColoadReportObj(TradelaneBooking ShipmentDetail)
        {
            List <TradelaneBookingCoLoadFormModel> ColoadList = new List <TradelaneBookingCoLoadFormModel>();

            if (ShipmentDetail != null)
            {
                TradelaneBookingCoLoadFormModel ColoadModel = new TradelaneBookingCoLoadFormModel();
                ColoadModel.FrayteNumber       = ShipmentDetail.FrayteNumber;
                ColoadModel.ColoadTitle        = "CO LOAD BOOKING FORM (" + DateTime.UtcNow.Date.Year + ")";
                ColoadModel.ShipperAddress     = UtilityRepository.ConcatinateAddress(ShipmentDetail.ShipFrom, ShipmentDetail.DepartureAirport.AirportCode);
                ColoadModel.ConsigneeAddress   = UtilityRepository.ConcatinateAddress(ShipmentDetail.ShipTo, ShipmentDetail.DestinationAirport.AirportCode);
                ColoadModel.OperationZoneId    = UtilityRepository.GetOperationZone().OperationZoneId;
                ColoadModel.CTCPerson          = "";
                ColoadModel.ShipperPhoneNo     = !string.IsNullOrEmpty(ShipmentDetail.ShipFrom.Phone) && !string.IsNullOrEmpty(ShipmentDetail.ShipFrom.Country.CountryPhoneCode) ? "(+" + ShipmentDetail.ShipFrom.Country.CountryPhoneCode + ") " + ShipmentDetail.ShipFrom.Phone : "";
                ColoadModel.ConsigneePhoneNo   = !string.IsNullOrEmpty(ShipmentDetail.ShipTo.Phone) && !string.IsNullOrEmpty(ShipmentDetail.ShipTo.Country.CountryPhoneCode) ? "(+" + ShipmentDetail.ShipTo.Country.CountryPhoneCode + ") " + ShipmentDetail.ShipTo.Phone : "";
                ColoadModel.NotifyPartyAddress = ShipmentDetail.IsNotifyPartySameAsReceiver ? ColoadModel.ConsigneeAddress : UtilityRepository.ConcatinateAddress(ShipmentDetail.NotifyParty, "");
                ColoadModel.NotifyPartyPhoneNo = !string.IsNullOrEmpty(ShipmentDetail.NotifyParty.Phone) && !string.IsNullOrEmpty(ShipmentDetail.NotifyParty.Country.CountryPhoneCode) ? "(+" + ShipmentDetail.NotifyParty.Country.CountryPhoneCode + ") " + ShipmentDetail.NotifyParty.Phone : "";
                ColoadModel.CagroReadyDate     = dbContext.TradelaneShipmentAllocations.Where(a => a.TradelaneShipmentId == ShipmentDetail.TradelaneShipmentId).FirstOrDefault() != null && dbContext.TradelaneShipmentAllocations.Where(a => a.TradelaneShipmentId == ShipmentDetail.TradelaneShipmentId).FirstOrDefault().CreatedOnUTC != null?dbContext.TradelaneShipmentAllocations.Where(a => a.TradelaneShipmentId == ShipmentDetail.TradelaneShipmentId).FirstOrDefault().CreatedOnUTC.Value.Date.ToString("dd-MMM-yy") : "";

                ColoadModel.DepartureAirport    = ShipmentDetail.DepartureAirport != null ? ShipmentDetail.DepartureAirport.AirportCode + " - " + ShipmentDetail.DepartureAirport.AirportName : "";
                ColoadModel.DestinationAirport  = ShipmentDetail.DestinationAirport != null ? ShipmentDetail.DestinationAirport.AirportCode + " - " + ShipmentDetail.DestinationAirport.AirportName : "";
                ColoadModel.MawbNo              = !string.IsNullOrEmpty(ShipmentDetail.MAWB) ? ShipmentDetail.AirlinePreference.AilineCode + " " + ShipmentDetail.MAWB.Substring(0, 4) + " " + ShipmentDetail.MAWB.Substring(4, 4) : "";
                ColoadModel.SpecialInstruction  = "";
                ColoadModel.ExportLicenceNo     = !string.IsNullOrEmpty(ShipmentDetail.ExportLicenceNo) ? ShipmentDetail.ExportLicenceNo : "";;
                ColoadModel.AirLine             = ShipmentDetail.AirlinePreference != null && !string.IsNullOrEmpty(ShipmentDetail.AirlinePreference.AirLineName) ? ShipmentDetail.AirlinePreference.AirLineName : "";
                ColoadModel.TotalPackages       = GetTotalPackages(ShipmentDetail.TradelaneShipmentId);
                ColoadModel.ShipmentDescription = !string.IsNullOrEmpty(ShipmentDetail.ShipmentDescription) ? ShipmentDetail.ShipmentDescription : "";
                ColoadModel.GrossWeight         = GetGrossWeight(ShipmentDetail.TradelaneShipmentId);
                ColoadModel.Volume              = ShipmentDetail.HAWBPackages.Select(a => a.TotalVolume).Sum().ToString();
                ColoadModel.CopyrightText       = "Published by FRAYTE Logistics Ltd" + Environment.NewLine + "© CopyRight " + DateTime.UtcNow.Date.Year;
                ColoadList.Add(ColoadModel);
            }
            return(ColoadList);
        }
        public List <ExpressReportDriverManifest> GetDriverManifestReportObj(int tradelaneShipmentId, int userId)
        {
            List <ExpressReportDriverManifest> list = new List <ExpressReportDriverManifest>();

            try
            {
                var    user           = dbContext.Users.Find(userId);
                string refNO          = CommonConversion.GetNewFrayteNumber();
                var    customerDetail = (from r in dbContext.Users
                                         join s in dbContext.TradelaneShipments on r.UserId equals s.CustomerId
                                         where s.TradelaneShipmentId == tradelaneShipmentId
                                         select new
                {
                    CustomerName = r.CompanyName
                }).FirstOrDefault();

                var Result         = dbContext.ExpressManifests.Where(a => a.TradelaneShipmentId == tradelaneShipmentId).FirstOrDefault();
                var ShipmentDetail = new TradelaneBookingRepository().GetTradelaneBookingDetails(tradelaneShipmentId, "");
                var hub            = (from r in dbContext.ExpressManifests
                                      join h in dbContext.Hubs on r.HubId equals h.HubId
                                      where r.TradelaneShipmentId == tradelaneShipmentId
                                      select h
                                      ).FirstOrDefault();

                ExpressReportDriverManifest reportObj = new ExpressReportDriverManifest();
                reportObj.Ref                = refNO;
                reportObj.Barcode            = Result.BarCode;
                reportObj.DriverManifestName = "Destination Manifest-" + Result.BarCode + " (" + ShipmentDetail.ShipmentHandlerMethod.DisplayName + ")"; //       EMPM.ExportManifestName = "Origin Manifest-" + Result.BarCode + " (" + ShipmentDetail.ShipmentHandlerMethod.DisplayName + ")";
                reportObj.Hub                = hub.Code;
                reportObj.MAWB               = ShipmentDetail.AirlinePreference.AilineCode + " " + ShipmentDetail.MAWB.Substring(0, 4) + " " + ShipmentDetail.MAWB.Substring(4, 4);
                reportObj.PrintedBy          = user.ContactName;

                var userInfo = (from r in dbContext.Users
                                join tz in dbContext.Timezones on r.TimezoneId equals tz.TimezoneId
                                where r.UserId == userId
                                select tz
                                ).FirstOrDefault();

                var UserTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(userInfo.Name);

                //UtilityRepository.UtcDateToOtherTimezone(shipment.CreatedOnUtc, shipment.CreatedOnUtc.TimeOfDay, UserTimeZoneInfo);

                DateTime date = UtilityRepository.UtcDateToOtherTimezone(DateTime.UtcNow, DateTime.UtcNow.TimeOfDay, UserTimeZoneInfo).Item1;
                string   time = UtilityRepository.GetFormattedTimeFromString(UtilityRepository.UtcDateToOtherTimezone(DateTime.UtcNow, DateTime.UtcNow.TimeOfDay, UserTimeZoneInfo).Item2);

                // Append the created by time zone in time
                reportObj.PrintedDateTime = date.ToString("dd-MMM-yy") + " " + time + " " + userInfo.OffsetShort;
                //reportObj.PuickUpAddress = UtilityRepository.ConcatinateAddress(ShipmentDetail.ShipFrom, "");

                if (hub != null)
                {
                    TradelBookingAdress address = new TradelBookingAdress();

                    address.Address     = hub.Address;
                    address.Address2    = hub.Address2;
                    address.City        = hub.City;
                    address.State       = hub.State;
                    address.PostCode    = hub.PostCode;
                    address.Country     = new FrayteCountryCode();
                    address.Phone       = hub.TelephoneNo;
                    address.CompanyName = hub.Name;
                    var country = dbContext.Countries.Where(p => p.CountryId == hub.CountryId).FirstOrDefault();
                    if (country != null)
                    {
                        address.Country.CountryId = country.CountryId;
                        address.Country.Code      = country.CountryCode;
                        address.Country.Code2     = country.CountryCode2;
                        address.Country.Name      = country.CountryName;
                    }
                    reportObj.PuickUpAddress = UtilityRepository.ConcatinateAddress(address, "");
                }
                //reportObj.PuickUpAddress = UtilityRepository.ConcatinateAddress(ShipmentDetail.ShipTo, "");

                reportObj.MAWBChargeableWeight = ShipmentDetail.HAWBPackages.Sum(p => p.TotalWeight * p.TotalCartons);
                reportObj.MAWBGrossWeight      = ShipmentDetail.HAWBPackages.Sum(p => p.TotalWeight * p.TotalCartons);

                if (ShipmentDetail.ShipmentHandlerMethod.ShipmentHandlerMethodId == 5)
                {
                    var shipmentAllocation = dbContext.TradelaneShipmentAllocations.Where(p => p.TradelaneShipmentId == tradelaneShipmentId && p.LegNum == "Leg2").OrderByDescending(p => p.TradelaneShipmentAllocationId).FirstOrDefault();

                    reportObj.FlightNumber = shipmentAllocation.FlightNumber;
                    var Airline = dbContext.Airlines.Find(shipmentAllocation.AirlineId);
                    if (Airline != null)
                    {
                        reportObj.Airline = Airline.AirLineName + " - " + Airline.CarrierCode3;
                    }
                    var timezone = dbContext.Timezones.Find(shipmentAllocation.TimezoneId);
                    if (timezone != null)
                    {
                        var TimeZoneInfor = TimeZoneInfo.FindSystemTimeZoneById(userInfo.Name);
                        //UtilityRepository.UtcDateToOtherTimezone(shipment.CreatedOnUtc, shipment.CreatedOnUtc.TimeOfDay, UserTimeZoneInfo);
                        DateTime date1 = UtilityRepository.UtcDateToOtherTimezone(DateTime.UtcNow, DateTime.UtcNow.TimeOfDay, TimeZoneInfor).Item1;
                        string   time1 = UtilityRepository.GetFormattedTimeFromString(UtilityRepository.UtcDateToOtherTimezone(DateTime.UtcNow, DateTime.UtcNow.TimeOfDay, TimeZoneInfor).Item2);
                        // Append the created by time zone in time
                        reportObj.ETA         = date1.ToString("dd-MMM-yy") + " " + time1;
                        reportObj.ETATimeZone = "(" + timezone.OffsetShort + ")";
                    }
                }
                else
                {
                    var shipmentAllocation = dbContext.TradelaneShipmentAllocations.Where(p => p.TradelaneShipmentId == tradelaneShipmentId).OrderByDescending(p => p.TradelaneShipmentAllocationId).FirstOrDefault();
                    reportObj.FlightNumber = shipmentAllocation.FlightNumber;
                    var Airline = dbContext.Airlines.Find(shipmentAllocation.AirlineId);
                    if (Airline != null)
                    {
                        reportObj.Airline = Airline.AirLineName + " - " + Airline.CarrierCode3;
                    }
                    var timezone = dbContext.Timezones.Find(shipmentAllocation.TimezoneId);
                    if (timezone != null)
                    {
                        var TimeZoneInfor = TimeZoneInfo.FindSystemTimeZoneById(userInfo.Name);
                        //UtilityRepository.UtcDateToOtherTimezone(shipment.CreatedOnUtc, shipment.CreatedOnUtc.TimeOfDay, UserTimeZoneInfo);
                        DateTime date1 = UtilityRepository.UtcDateToOtherTimezone(DateTime.UtcNow, DateTime.UtcNow.TimeOfDay, TimeZoneInfor).Item1;
                        string   time1 = UtilityRepository.GetFormattedTimeFromString(UtilityRepository.UtcDateToOtherTimezone(DateTime.UtcNow, DateTime.UtcNow.TimeOfDay, TimeZoneInfor).Item2);
                        // Append the created by time zone in time
                        reportObj.ETA         = date1.ToString("dd-MMM-yy") + " " + time1;
                        reportObj.ETATimeZone = "(" + timezone.OffsetShort + ")";
                    }
                }
                reportObj.CarrierBags = new List <ExpressReportDriverManifestBagDetail>();
                ExpressReportDriverManifestBagDetail mn;

                var detail = (from r in dbContext.ExpressManifests
                              join b in dbContext.ExpressBags on r.ExpressManifestId equals b.ManifestId
                              where r.TradelaneShipmentId == tradelaneShipmentId
                              select b).GroupBy(group => group.Courier).Select(p => new
                {
                    key  = p.Key,
                    data = p.Select(q => new
                    {
                        Id = q.DriverManifestId,
                        DriverManifestNumber = dbContext.ExpressDriverManifests.Where(a => a.ExpressDriverManifestId == q.DriverManifestId).FirstOrDefault().DriverManifestBarCode,
                        Carrier      = q.Courier,
                        BagBarCode   = q.BagBarCode,
                        BagId        = q.BagId,
                        BagNumber    = q.BagNumber,
                        HubCarrierId = q.HubCarrierId
                    }).ToList()
                }).ToList();

                if (detail.Count > 0)
                {
                    foreach (var item in detail)
                    {
                        int hubCarrierId = item.data[0].HubCarrierId.HasValue ? item.data[0].HubCarrierId.Value : 0;

                        var hubCarrier = dbContext.HubCarriers.Where(p => p.HubCarrierId == hubCarrierId).FirstOrDefault();
                        mn            = new ExpressReportDriverManifestBagDetail();
                        mn.Carrier    = item.key;
                        mn.CutOffTime = hubCarrier.CutOffTime;
                        mn.NoOfBags   = item.data.Count;

                        decimal totalWeight = 0.00M;
                        int     totalPieces = 0;
                        foreach (var item1 in item.data)
                        {
                            var ship = (from r in dbContext.Expresses
                                        join d in dbContext.ExpressDetails on r.ExpressId equals d.ExpressId
                                        where r.BagId == item1.BagId
                                        select d
                                        ).ToList();

                            totalPieces += ship.Count;
                            totalWeight  = ship.Sum(p => p.Weight * p.CartonQty);
                        }
                        mn.TotalPieces = totalPieces;
                        mn.TotalWeight = totalWeight;
                        reportObj.CarrierBags.Add(mn);
                    }
                    reportObj.CarrierManifests = new List <ExpressReportDriverCarrierManifest>();
                    ExpressReportDriverCarrierManifest cm;
                    foreach (var item in detail)
                    {
                        cm = new ExpressReportDriverCarrierManifest();
                        int hubCarrierId = item.data[0].HubCarrierId.HasValue ? item.data[0].HubCarrierId.Value : 0;
                        cm.CarrierManifestBarcoede = item.data.FirstOrDefault().DriverManifestNumber;
                        cm.CarrierManifest         = item.key + " - (" + item.data.FirstOrDefault().DriverManifestNumber + ")" + " Destination Manifest";
                        cm.CarrierBagDetails       = new List <ExpressReportCarrierBagDetail>();
                        ExpressReportCarrierBagDetail d;
                        var hubCarrier = dbContext.HubCarriers.Where(p => p.HubCarrierId == hubCarrierId).FirstOrDefault();

                        if (hubCarrier != null)
                        {
                            TradelBookingAdress address = new TradelBookingAdress();

                            address.Address     = hubCarrier.Address;
                            address.Address2    = hubCarrier.Address2;
                            address.City        = hubCarrier.City;
                            address.State       = hubCarrier.State;
                            address.PostCode    = hubCarrier.PostCode;
                            address.Country     = new FrayteCountryCode();
                            address.Phone       = hubCarrier.TelephoneNo;
                            address.CompanyName = hubCarrier.CompanyName;
                            var country = dbContext.Countries.Where(p => p.CountryId == hubCarrier.CountryId).FirstOrDefault();
                            if (country != null)
                            {
                                address.Country.CountryId = country.CountryId;
                                address.Country.Code      = country.CountryCode;
                                address.Country.Code2     = country.CountryCode2;
                                address.Country.Name      = country.CountryName;
                            }
                            cm.DropOffAddress = UtilityRepository.ConcatinateAddress(address, "");
                        }

                        foreach (var item1 in item.data)
                        {
                            d = new ExpressReportCarrierBagDetail();

                            d.BagNumber = item1.BagNumber;

                            var sdf = (from r in dbContext.Expresses
                                       join ed in dbContext.ExpressDetails on r.ExpressId equals ed.ExpressId
                                       where r.BagId == item1.BagId
                                       select ed
                                       ).ToList();
                            d.TotalPieces      = sdf.Count;
                            d.ExporterName     = customerDetail.CustomerName;
                            d.TotalWeight      = sdf.Sum(p => p.CartonQty * p.Weight);
                            d.Carrier          = item.key;
                            d.BagId            = item1.BagId;
                            d.TermAndCondition = hubCarrier.TermAndCondition;
                            cm.CarrierBagDetails.Add(d);
                        }
                        reportObj.CarrierManifests.Add(cm);
                    }
                }
                list.Add(reportObj);
                return(list);
            }
            catch (Exception ex)
            {
                return(list);
            }
        }
        public List <TradelaneBookingReportMAWB> GetMAWBObj(int tradelaneShipmentId)
        {
            try
            {
                List <TradelaneBookingReportMAWB> list        = new List <TradelaneBookingReportMAWB>();
                TradelaneBookingReportMAWB        reportModel = new TradelaneBookingReportMAWB();
                var    ShipmentDetail = new TradelaneBookingRepository().GetTradelaneBookingDetails(tradelaneShipmentId, "");
                var    Custompdf      = new TradelaneShipmentRepository().GetMawbCustomizePdf(tradelaneShipmentId);
                string mawb           = string.Empty;
                if (!string.IsNullOrEmpty(ShipmentDetail.MAWB))
                {
                    if (ShipmentDetail.MAWB.Length == 8)
                    {
                        mawb = ShipmentDetail.MAWB.Substring(0, 4) + " " + ShipmentDetail.MAWB.Substring(3, 4);
                    }
                    else
                    {
                        mawb = ShipmentDetail.MAWB;
                    }
                }
                reportModel.MAWB                   = mawb;
                reportModel.ShipperAddress         = UtilityRepository.ConcatinateAddress(ShipmentDetail.ShipFrom, ShipmentDetail.DepartureAirport.AirportCode);
                reportModel.ShipperAccountNumber   = string.Empty;
                reportModel.ConsigneeAddress       = UtilityRepository.ConcatinateAddress(ShipmentDetail.ShipTo, ShipmentDetail.DestinationAirport.AirportCode);
                reportModel.ConsigneeAccountNumber = string.Empty;
                reportModel.NotifyParty            = ShipmentDetail.IsNotifyPartySameAsReceiver ? "NOTIFY: " + reportModel.ConsigneeAddress : "NOTIFY: " + UtilityRepository.ConcatinateAddress(ShipmentDetail.NotifyParty, "");
                reportModel.CarrierAgent           = string.Empty;
                reportModel.AirportofDeparture     = ShipmentDetail.ShipFrom.Country.Name;
                reportModel.DestinationAirport     = ShipmentDetail.DestinationAirport.AirportName;
                reportModel.DestinationAirportCode = ShipmentDetail.DestinationAirport.AirportCode;
                reportModel.CurencyCode            = ShipmentDetail.DeclaredCurrency.CurrencyCode;
                reportModel.AmountOfInsurance      = ShipmentDetail.InsuranceAmount.HasValue ? ShipmentDetail.InsuranceAmount.Value : 0;
                reportModel.MAWBCode               = ShipmentDetail.AirlinePreference.AilineCode;
                reportModel.MAWBWithCode           = ShipmentDetail.AirlinePreference.AilineCode + " " + mawb;
                reportModel.MAWBCountryCode        = ShipmentDetail.ShipFrom.Country.Code;
                reportModel.ShipmentDescription    = ShipmentDetail.ShipmentDescription;
                reportModel.Airline                = ShipmentDetail.AirlinePreference.AirLineName;

                reportModel.IssuingCarriersAgentNameandCity = Custompdf.IssuingCarriersAgentNameandCity;
                reportModel.AccountNo = Custompdf.AccountNo;
                reportModel.DeclaredValueForCarriage = Custompdf.DeclaredValueForCarriage;
                reportModel.DeclaredValueForCustoms  = Custompdf.DeclaredValueForCustoms;
                reportModel.ValuationCharge          = Custompdf.ValuationCharge;
                reportModel.Tax = Custompdf.Tax;
                reportModel.TotalOtherChargesDueAgent   = Custompdf.TotalOtherChargesDueAgent;
                reportModel.TotalOtherChargesDueCarrier = Custompdf.TotalOtherChargesDueCarrier;
                reportModel.OtherCharges            = Custompdf.OtherCharges;
                reportModel.ChargesAtDestination    = Custompdf.ChargesAtDestination;
                reportModel.TotalCollectCharges     = Custompdf.TotalCollectCharges;
                reportModel.CurrencyConversionRates = Custompdf.CurrencyConversionRates;
                reportModel.TotalPrepaid            = Custompdf.TotalPrepaid;
                reportModel.TotalCollect            = Custompdf.TotalCollect;
                reportModel.HandlingInformation     = Custompdf.HandlingInformation;
                reportModel.AgentsIATACode          = Custompdf.AgentsIATACode;

                if (UtilityRepository.GetOperationZone().OperationZoneId == 1)
                {
                    reportModel.IssuedBy  = "FRAYTE LOGISTICS LIMITED" + Environment.NewLine;
                    reportModel.IssuedBy += "501 5/F KWONG LOONG TAI BUILDING" + Environment.NewLine;
                    reportModel.IssuedBy += "1016-1018 TAI NAN WEST STREET" + ", " + "CHEUNG SHA WAN" + " ," + "HON";
                }
                else
                {
                    reportModel.IssuedBy  = "FRAYTE LOGISTICS LIMITED" + Environment.NewLine;
                    reportModel.IssuedBy += "501 5/F KWONG LOONG TAI BUILDING" + Environment.NewLine;
                    reportModel.IssuedBy += "1016-1018 TAI NAN WEST STREET" + ", " + "CHEUNG SHA WAN" + " ," + "HON";
                }

                List <HAWBTradelanePackage> package;
                var collection = (from r in dbContext.TradelaneShipmentDetails
                                  join s in dbContext.TradelaneShipments on r.TradelaneShipmentId equals s.TradelaneShipmentId
                                  select new
                {
                    HAWBNumber = s.HAWBNumber,
                    TradelaneShipmentId = r.TradelaneShipmentId,
                    TradelaneShipmentDetailId = r.TradelaneShipmentDetailId,
                    CartonNumber = r.CartonNumber,
                    CartonValue = r.CartonValue,
                    Length = r.Length,
                    Width = r.Width,
                    Height = r.Height,
                    Weight = r.Weight,
                    HAWB = r.HAWB
                }).Where(p => p.TradelaneShipmentId == tradelaneShipmentId).ToList();

                if (collection.Count > 0)
                {
                    package = collection.GroupBy(x => x.HAWB)
                              .Select(group => new HAWBTradelanePackage
                    {
                        TradelaneShipmentId = group.FirstOrDefault().TradelaneShipmentId,
                        HAWB            = group.Key,
                        HAWBNumber      = group.FirstOrDefault().HAWBNumber.HasValue ? group.FirstOrDefault().HAWBNumber.Value : 0,
                        TotalCartons    = group.Select(p => p.CartonValue).Sum(),
                        EstimatedWeight = group.Select(p => p.Weight * p.CartonValue).Sum(),
                        TotalVolume     = group.Select(p => (p.Length * p.Width * p.Height) * p.CartonValue).Sum(),
                        TotalWeight     = group.Select(p => p.Weight * p.CartonValue).Sum(),
                        Packages        = group.Select(subGroup => new TradelanePackage
                        {
                            CartonNumber = subGroup.CartonNumber,
                            CartonValue  = subGroup.CartonValue,
                            HAWB         = subGroup.HAWB,
                            Height       = subGroup.Height,
                            Length       = subGroup.Length,
                            TradelaneShipmentDetailId = subGroup.TradelaneShipmentDetailId,
                            TradelaneShipmentId       = subGroup.TradelaneShipmentId,
                            Weight = subGroup.Weight,
                            Width  = subGroup.Width
                        }).ToList()
                    }).ToList();
                }
                else
                {
                    return(null);
                }

                if (package != null)
                {
                    reportModel.TotalCartons    = package.Sum(p => p.TotalCartons);
                    reportModel.TotalWeight     = package.Sum(p => p.TotalWeight);
                    reportModel.EstimatedWeight = package.Sum(p => p.EstimatedWeight);
                    reportModel.TotalVolume     = reportModel.TotalVolume = ShipmentDetail.PakageCalculatonType == FraytePakageCalculationType.kgtoCms ? Math.Round(package.Sum(p => p.TotalVolume) / (100 * 100 * 100), 2) : Math.Round(package.Sum(p => p.TotalVolume) / (39.37M * 39.37M * 39.37M), 2);
                    reportModel.DimensionUnit   = ShipmentDetail.PakageCalculatonType == FraytePakageCalculationType.kgtoCms ? "CM" : "IN";
                    reportModel.WeightUnit      = ShipmentDetail.PakageCalculatonType == FraytePakageCalculationType.kgtoCms ? "KG" : "LB";
                    reportModel.VolumeUnit      = ShipmentDetail.PakageCalculatonType == FraytePakageCalculationType.kgtoCms ? "CBM" : "CBM";

                    reportModel.ShipmentDescription += Environment.NewLine + "VOL " + reportModel.TotalVolume + " " + reportModel.VolumeUnit;
                    reportModel.ShipmentDescription += Environment.NewLine + "VOL WEIGHT = " + reportModel.TotalWeight + " " + reportModel.WeightUnit;
                    reportModel.CreatedOn            = DateTime.UtcNow;
                    reportModel.Signature            = "Frayte Logistics SPX";
                    reportModel.CreatedOnCountry     = "Hong Kong";
                }

                list.Add(reportModel);
                return(list);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }