/// <summary> /// Seniority List view model /// </summary> /// <param name="model"></param> /// <param name="scoringRules"></param> /// <param name="rotationList"></param> /// <param name="context"></param> /// <returns></returns> public static SeniorityViewModel ToSeniorityViewModel(HetEquipment model, SeniorityScoringRules scoringRules, HetRentalRequestRotationList rotationList, DbAppContext context) { SeniorityViewModel seniorityViewModel = new SeniorityViewModel(); if (model == null) { return(seniorityViewModel); } int numberOfBlocks = 0; // get number of blocks for this equipment type if (model.DistrictEquipmentType != null) { numberOfBlocks = model.DistrictEquipmentType.EquipmentType.IsDumpTruck ? scoringRules.GetTotalBlocks("DumpTruck") + 1 : scoringRules.GetTotalBlocks() + 1; } // get equipment block number int blockNumber = 0; if (model.BlockNumber != null) { blockNumber = (int)model.BlockNumber; } // get equipment block number int numberInBlock = 0; if (model.NumberInBlock != null) { numberInBlock = (int)model.NumberInBlock; } // ************************************************************* // check if this record/owner was called last // ************************************************************* bool callLast = rotationList != null && rotationList.EquipmentId == model.EquipmentId; seniorityViewModel.LastCalled = callLast ? "Y" : " "; // ************************************************************* // map data to view model // ************************************************************* seniorityViewModel.Id = model.EquipmentId; if (model.DistrictEquipmentType != null) { seniorityViewModel.EquipmentType = model.DistrictEquipmentType.DistrictEquipmentName; } if (model.Owner != null) { seniorityViewModel.OwnerName = model.Owner.OrganizationName; seniorityViewModel.OwnerId = model.OwnerId; } // replacing Open with 3 (HETS-968 Rotation list -Wrong Block number for Open block) seniorityViewModel.Block = blockNumber == numberOfBlocks ? "3" : blockNumber.ToString(); // format the seniority value seniorityViewModel.Seniority = $"{model.Seniority:0.###}"; // format year / make / model / size seniorityViewModel.YearMakeModelSize = $"{model.Year}/{model.Make}/{model.Model}/{model.Size}"; seniorityViewModel.EquipmentCode = model.EquipmentCode; seniorityViewModel.YearsRegistered = model.YearsOfService.ToString(); // Determine if this equipment is currently hired seniorityViewModel.IsHired = EquipmentHelper.IsHired(model.EquipmentId, context) ? "Y" : "N"; // calculate and format the ytd hours float tempHours = EquipmentHelper.GetYtdServiceHours(model.EquipmentId, context); seniorityViewModel.YtdHours = string.Format("{0:0.###}", tempHours); // format the hours seniorityViewModel.HoursYearMinus1 = string.Format("{0:0.###}", model.ServiceHoursLastYear); seniorityViewModel.HoursYearMinus2 = string.Format("{0:0.###}", model.ServiceHoursTwoYearsAgo); seniorityViewModel.HoursYearMinus3 = string.Format("{0:0.###}", model.ServiceHoursThreeYearsAgo); // add the correct sorting order (numeric) seniorityViewModel.SenioritySortOrder = EquipmentHelper.CalculateSenioritySortOrder(blockNumber, numberInBlock); return(seniorityViewModel); }