示例#1
0
 private void ValidateMsd1CargoSummary(Msd1CargoSummary msd1CargoSummary)
 {
     var(isValidMsd1, msd1HardValidationErrMsg) = _validateMsdData.ValidateMSd1CargoSummary(_msd1, msd1CargoSummary);
     if (!isValidMsd1 || !string.IsNullOrEmpty(msd1HardValidationErrMsg.Trim()))
     {
         recordErrors.Append(msd1HardValidationErrMsg);
     }
 }
        private void MapMsd1ToMsd1Data()
        {
            Msd1Data = _context.Msd1Data.FirstOrDefault(x => x.Msd1Id == MSD1.Msd1Id) ?? new Msd1Data();

            Msd1Data.Msd1Id         = MSD1.Msd1Id ?? _helperService.GetUniqueKey();
            Msd1Data.Imo            = MSD1.Imo;
            Msd1Data.ShipName       = MSD1.ShipName;
            Msd1Data.FlagCode       = MSD1.FlagCode;
            Msd1Data.Year           = MSD1.Year;
            Msd1Data.Quarter        = MSD1.Quarter;
            Msd1Data.AssociatedPort = _helperService.GetPortCodeByPort(MSD1.AssociatedPort) ?? MSD1.AssociatedPort;
            Msd1Data.ReportingPort  = _helperService.GetPortCodeByPort(MSD1.ReportingPort) ?? MSD1.ReportingPort;
            Msd1Data.NumVoyages     = MSD1.NumVoyages;
            Msd1Data.IsInbound      = MSD1.IsInbound == null ? false : MSD1.IsInbound.Value;
            Msd1Data.VoyageDate     = MSD1.VoyageDate;
            Msd1Data.UserName       = Msd1Data.UserName ?? _userManager.GetUserName(HttpContext.User);
            Msd1Data.DataSourceId   = (int)DataSource.WEB;
            Msd1Data.CreatedDate    = Msd1Data.CreatedDate != default(DateTime) && Msd1Data.CreatedDate < DateTime.Now ?
                                      Msd1Data.CreatedDate : DateTime.SpecifyKind(currentDateTime, DateTimeKind.Utc);
            Msd1Data.LastUpdatedBy = _userManager.GetUserName(HttpContext.User);
            Msd1Data.ModifiedDate  = DateTime.SpecifyKind(currentDateTime, DateTimeKind.Utc);
            Msd1Data.AgentSenderId = MSD1.AgentSenderID;
            Msd1Data.LineSenderId  = MSD1.LineSenderID;
            Msd1Data.RecordRef     = MSD1.RecordRef;

            Msd1Data.Msd1CargoSummary = _context.Msd1CargoSummary.Where(x => x.Msd1Id == Msd1Data.Msd1Id)
                                        .ToList();

            if (Msd1Data.Msd1CargoSummary.Count > 0)
            {
                Msd1Data.Msd1CargoSummary.Clear();
            }

            foreach (CargoItem item in MSD1.CargoSummary)
            {
                Msd1CargoSummary msd1CargoSummary = new Msd1CargoSummary
                {
                    Msd1Id            = Msd1Data.Msd1Id,
                    CategoryCode      = _helperService.GetCategoryCodeByDescription(item.Category),
                    UnitsWithCargo    = item.UnitsWithCargo,
                    UnitsWithoutCargo = item.UnitsWithoutCargo,
                    TotalUnits        = item.TotalUnits,
                    GrossWeight       = (decimal?)item.GrossWeight,
                    Description       = item.Description
                };

                Msd1Data.Msd1CargoSummary.Add(msd1CargoSummary);
            }
            ;
        }
        public (bool, string) ValidateMSd1CargoSummary(Msd1Data msd1Data, Msd1CargoSummary cargoItem)
        {
            sb = new StringBuilder();
            var modelState = _cargoPortValidateService.ManualModelCargoValidation(msd1Data, cargoItem);

            if (modelState.IsValid)
            {
                return(true, string.Empty);
            }
            foreach (var error in modelState.Values.SelectMany(item => item.Errors))
            {
                sb.AppendLine().AppendLine(error.ErrorMessage);
            }

            return(false, sb.ToString());
        }
        public IActionResult OnGet()
        {
            try
            {
                CargoSummary = _context.Msd1CargoSummary.Where(x => x.Id == int.Parse(TempData.Peek("SumId").ToString()))
                               .First();

                Msd = _context.Msd1Data.Where(x => x.Msd1Id == TempData.Peek("Msd1Id").ToString()).First();
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(RedirectToPage("/Index", new { area = "Admin" }));
            }

            return(Page());
        }
        public async Task <IActionResult> OnPostAsync()
        {
            try
            {
                CargoSummary = _context.Msd1CargoSummary.Where(x => x.Id == int.Parse(TempData.Peek("SumId").ToString()))
                               .First();

                CargoSummary.CategoryCode      = CategoryCode;
                CargoSummary.UnitsWithCargo    = UnitsWithCargo;
                CargoSummary.UnitsWithoutCargo = UnitsWithoutCargo;
                CargoSummary.TotalUnits        = TotalUnits;
                CargoSummary.GrossWeight       = GrossWeight;
                CargoSummary.Description       = Description;

                await UpdateLastUpdatedAsync();

                var totalWeightAllowed = _helperService.GetDeadweightByIMO(Msd.Imo) * Msd.NumVoyages;

                if (CargoSummary.GrossWeight > totalWeightAllowed)
                {
                    ModelState.AddModelError("GrossWeight", "The Gross Weight is larger than this ship can carry");
                    return(Page());
                }

                if (!DoesCategoryCodeExist(CargoSummary.CategoryCode))
                {
                    ModelState.AddModelError("CategoryCode", $"The Category Code {CargoSummary.CategoryCode} is not valid");
                    return(Page());
                }

                _context.SaveChanges();

                TempData.Put("EditSuccess", "Cargo summary has been successfully amended");

                TempData["Msd1Id"] = CargoSummary.Msd1Id;
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(RedirectToPage("/Summaries/ViewSummary", new { area = "Admin" }));
            }

            return(RedirectToPage("/Summaries/ViewSummary", new { area = "Admin" }));
        }
示例#6
0
        public MSD1FileProcess(Msd1Data msd1,
                               Msd1CargoSummary msd1CargoSummary,
                               FlatFile fileInfo,
                               ValidateMsdData validateMsdData,
                               IHelperService helperService,
                               IFileProcessService fileProcessService,
                               IMsd1DataService msd1DataService,
                               ILogger <MSD1FileProcess> logger

                               )
        {
            _msd1               = msd1;
            _msd1CargoSummary   = msd1CargoSummary;
            _fileInfo           = fileInfo;
            _helperService      = helperService;
            _fileProcessService = fileProcessService;
            _msd1DataService    = msd1DataService;
            _logger             = logger;
            _validateMsdData    = validateMsdData;
            recordErrors        = new StringBuilder();
            bodyErrorMsg        = new StringBuilder();
        }
示例#7
0
        public ModelStateDictionary ManualModelCargoValidation(Msd1Data localMSD1, Msd1CargoSummary cargoItem)
        {
            totalGrossWeight = 0;

            _modelState = new ModelStateDictionary();

            var currentCargoGroup = _portFreightContext.CargoGroup.
                                    Join(_portFreightContext.CargoCategory, cg => cg.GroupCode, cc => cc.GroupCode,
                                         (cg, cc) => new { cg, cc })
                                    .Where(x => x.cc.CategoryCode.Equals(cargoItem.CategoryCode))
                                    .Select(x => x.cg).FirstOrDefault();

            if (currentCargoGroup == null)
            {
                _modelState.AddModelError("CargoItem.CategoryCode", "Invalid value for category code. Please correct or contact the helpdesk for advice.");
                return(_modelState);
            }

            var cargoCategory        = _portFreightContext.CargoCategory.Where(x => x.GroupCode == currentCargoGroup.GroupCode);
            var currentCargoCategory = cargoCategory.FirstOrDefault(x => x.CategoryCode == cargoItem.CategoryCode);

            TextInputDisplayDriver = BuildTextInputDisplayDriver(currentCargoCategory, currentCargoGroup.IsUnitised);

            var grossWeightVisible          = TextInputDisplayDriver.Contains(WeightConfigure);
            var numUnitsVisible             = TextInputDisplayDriver.Contains(NoCargoConfigure);
            var numUnitsWithCargoVisible    = TextInputDisplayDriver.Contains(CargoConfigure) && !numUnitsVisible;
            var numUnitsWithoutCargoVisible = numUnitsWithCargoVisible;

            if (numUnitsVisible && (!cargoItem.TotalUnits.HasValue || cargoItem.TotalUnits == 0))
            {
                _modelState.AddModelError("CargoItem.TotalUnits", "Missing value for total units. Please correct or contact the helpdesk for advice.");
            }

            if (numUnitsWithCargoVisible && (!cargoItem.UnitsWithCargo.HasValue))
            {
                _modelState.AddModelError("CargoItem.UnitsWithCargo", "Invalid value for units with cargo. Please correct or contact the helpdesk for advice.");
            }

            if (numUnitsWithoutCargoVisible && (!cargoItem.UnitsWithoutCargo.HasValue))
            {
                _modelState.AddModelError("CargoItem.UnitsWithoutCargo", "Invalid value for units without cargo. Please correct or contact the helpdesk for advice.");
            }

            if (grossWeightVisible)
            {
                if (!cargoItem.GrossWeight.HasValue)
                {
                    _modelState.AddModelError("CargoItem.GrossWeight", "Invalid value for gross weight. Please correct or contact the helpdesk for advice.");
                }
                else if (!numUnitsWithCargoVisible && !numUnitsWithoutCargoVisible && cargoItem.GrossWeight == 0)
                {
                    _modelState.AddModelError("CargoItem.GrossWeight", "Gross weight cannot be 0. Please correct or contact the helpdesk for advice.");
                }
            }

            if (numUnitsWithCargoVisible &&
                numUnitsWithoutCargoVisible &&
                cargoItem.UnitsWithCargo == 0 &&
                cargoItem.UnitsWithoutCargo == 0)
            {
                _modelState.AddModelError("CargoItem.UnitsWithCargo", "Number of units with and without cargo cannot both be 0. Please correct or contact the helpdesk for advice.");
            }

            if (numUnitsWithCargoVisible && cargoItem.UnitsWithCargo > 0 && cargoItem.GrossWeight == 0)
            {
                _modelState.AddModelError("CargoItem.GrossWeight",
                                          "You reported " + cargoItem.UnitsWithCargo + " units with cargo but no weight. Enter the weight of this cargo or contact the helpdesk for advice.");
            }

            if (numUnitsWithCargoVisible && cargoItem.UnitsWithCargo == 0 && cargoItem.GrossWeight > 0)
            {
                _modelState.AddModelError("CargoItem.UnitsWithCargo",
                                          "You reported cargo weighing " + cargoItem.GrossWeight + " tonnes. Enter the number of units that were carrying this cargo or contact the helpdesk for advice.");
            }
            return(_modelState);
        }
示例#8
0
        private void AddCargoSummaryToMsd1Data(string record)
        {
            _msd1CargoSummary = new Msd1CargoSummary
            {
                Msd1Id = _msd1.Msd1Id
            };

            var validateCategoryCode = string.IsNullOrEmpty(record.Substring(67, 2).Trim()) || record.Substring(67, 2).Length < 2
                ? record.Substring(67, 2) + " is not a valid cargo code. Please correct or contact the helpdesk for advice."
                : string.Empty;

            if (!string.IsNullOrEmpty(validateCategoryCode))
            {
                recordErrors.AppendLine().AppendFormat(validateCategoryCode);
            }

            byte categoryCode    = 0;
            var  strCategoryCode = record.Substring(67, 2).Length < 2 ? string.Empty : record.Substring(67, 2);

            byte.TryParse(strCategoryCode, out categoryCode);
            _msd1CargoSummary.CategoryCode = categoryCode;

            var validateGrossWeight = string.IsNullOrEmpty(record.Substring(69, 9).Trim())
                ? record.Substring(69, 9) + " is not a valid value for gross weight. Please correct or contact the helpdesk for advice."
                : string.Empty;

            if (!string.IsNullOrEmpty(validateGrossWeight))
            {
                recordErrors.AppendLine().AppendFormat(validateGrossWeight);
            }

            UInt32 grossWeight    = 0;
            var    strGrossWeight = record.Substring(69, 9).Length < 9 ? string.Empty : record.Substring(69, 9);

            UInt32.TryParse(strGrossWeight, out grossWeight);
            _msd1CargoSummary.GrossWeight = grossWeight;

            UInt32 unitsWithCargo    = 0;
            var    strUnitsWithCargo = record.Substring(78, 8).Length < 8 ? string.Empty : record.Substring(78, 8);

            UInt32.TryParse(strUnitsWithCargo, out unitsWithCargo);
            _msd1CargoSummary.UnitsWithCargo = unitsWithCargo;

            UInt32 unitsWithoutCargo    = 0;
            var    strUnitsWithoutCargo = record.Substring(86, 8).Length < 8 ? string.Empty : record.Substring(86, 8);

            UInt32.TryParse(strUnitsWithoutCargo, out unitsWithoutCargo);
            _msd1CargoSummary.UnitsWithoutCargo = unitsWithoutCargo;

            UInt32 totalUnits    = 0;
            var    strTotalUnits = record.Substring(94, 8).Length < 8 ? string.Empty : record.Substring(94, 8);

            UInt32.TryParse(strTotalUnits, out totalUnits);
            _msd1CargoSummary.TotalUnits = totalUnits;

            if (record.Length >= 137)
            {
                _msd1CargoSummary.Description = string.IsNullOrEmpty(record.Substring(137)) ? string.Empty : record.Substring(137);
            }

            ValidateMsd1CargoSummary(_msd1CargoSummary);
            if (string.IsNullOrEmpty(recordErrors.ToString().Trim()))
            {
                _msd1.Msd1CargoSummary.Add(_msd1CargoSummary);
            }
        }
示例#9
0
        private void AddCargoSummaryToMsd1Data(string[] ARR)
        {
            var msd1CargoCategory = new Msd1CargoSummary();

            msd1CargoCategory.Msd1Id = _msd1.Msd1Id;

            Byte categoryCode    = 0;
            var  strCategoryCode = string.IsNullOrEmpty(ARR[13].Trim()) ? string.Empty : ARR[13];

            Byte.TryParse(strCategoryCode, out categoryCode);
            msd1CargoCategory.CategoryCode = categoryCode;

            var validateCategoryCode = string.IsNullOrEmpty(ARR[13].Trim()) ?
                                       ARR[13].Trim() + " is not a valid cargo code." + " Please correct or contact the help-desk for advice." : String.Empty;

            if (!string.IsNullOrEmpty(validateCategoryCode))
            {
                recordErrors.AppendLine().AppendFormat(validateCategoryCode);
            }

            UInt32 grossWeight    = 0;
            var    strGrossWeight = string.IsNullOrEmpty(ARR[14].Trim()) ? string.Empty : ARR[14];

            UInt32.TryParse(strGrossWeight, out grossWeight);
            msd1CargoCategory.GrossWeight = grossWeight;

            var validateGrossWeight = string.IsNullOrEmpty(ARR[14].Trim()) ?
                                      ARR[14].Trim() + " is not a valid value for gross weight. Please correct or contact the help-desk for advice." : String.Empty;

            if (!string.IsNullOrEmpty(validateGrossWeight))
            {
                recordErrors.AppendLine().AppendFormat(validateGrossWeight);
            }

            UInt32 unitsWithCargo    = 0;
            var    strUnitsWithCargo = string.IsNullOrEmpty(ARR[15].Trim()) ? string.Empty : ARR[15];

            UInt32.TryParse(strUnitsWithCargo, out unitsWithCargo);
            msd1CargoCategory.UnitsWithCargo = unitsWithCargo;

            var validateUnitsWithCargo = string.IsNullOrEmpty(ARR[15].Trim()) ?
                                         ARR[15].Trim() + " is not a valid value for units with cargo. Please correct or contact the help-desk for advice." : String.Empty;

            if (!string.IsNullOrEmpty(validateUnitsWithCargo))
            {
                recordErrors.AppendLine().AppendFormat(validateUnitsWithCargo);
            }

            UInt32 unitsWithoutCargo    = 0;
            var    strUnitsWithoutCargo = string.IsNullOrEmpty(ARR[16].Trim()) ? string.Empty : ARR[16];

            UInt32.TryParse(strUnitsWithoutCargo, out unitsWithoutCargo);
            msd1CargoCategory.UnitsWithoutCargo = unitsWithoutCargo;

            var validateUnitsWithoutCargo = string.IsNullOrEmpty(ARR[16].Trim()) ?
                                            ARR[16].Trim() + " is not a valid value for units without cargo. Please correct or contact the help-desk for advice." : String.Empty;

            if (!string.IsNullOrEmpty(validateUnitsWithoutCargo))
            {
                recordErrors.AppendLine().AppendFormat(validateUnitsWithoutCargo);
            }

            UInt32 totalUnits    = 0;
            var    strTotalUnits = string.IsNullOrEmpty(ARR[17].Trim()) ? string.Empty : ARR[17];

            UInt32.TryParse(strTotalUnits, out totalUnits);
            msd1CargoCategory.TotalUnits = totalUnits;

            var validateTotalUnits = string.IsNullOrEmpty(ARR[17].Trim()) ?
                                     ARR[17].Trim() + " is not a valid value for total units. Please correct or contact the help-desk for advice." : String.Empty;

            if (!string.IsNullOrEmpty(validateTotalUnits))
            {
                recordErrors.AppendLine().AppendFormat(validateTotalUnits);
            }

            ValidateMsd1CargoSummary(msd1CargoCategory);

            if (string.IsNullOrEmpty(recordErrors.ToString().Trim()))
            {
                _msd1.Msd1CargoSummary.Add(msd1CargoCategory);
            }
        }