/// <summary> /// Create rental request rotation list /// </summary> /// <param name="rentalRequestId"></param> public virtual IActionResult RentalRequestsRotationListRecalcGetAsync(int rentalRequestId) { bool exists = _context.RentalRequests.Any(a => a.Id == rentalRequestId); if (exists) { // get rental request RentalRequest result = _context.RentalRequests .Include(x => x.DistrictEquipmentType) .Include(x => x.DistrictEquipmentType.EquipmentType) .Include(x => x.LocalArea) .Include(x => x.LocalArea.ServiceArea.District.Region) .Include(x => x.RentalRequestRotationList) .First(a => a.Id == rentalRequestId); if (result.Status.Equals("In Progress", StringComparison.InvariantCultureIgnoreCase)) { // delete any existing rotation list records foreach (RentalRequestRotationList rentalRequestRotationList in result.RentalRequestRotationList) { _context.RentalRequestRotationLists.Remove(rentalRequestRotationList); } // update _context.SaveChanges(); // generate rotation list BuildRentalRequestRotationList(result); // save the changes _context.SaveChanges(); // repopulate the results with latest data result = _context.RentalRequests .Include(x => x.DistrictEquipmentType) .Include(x => x.DistrictEquipmentType.EquipmentType) .Include(x => x.LocalArea) .Include(x => x.LocalArea.ServiceArea.District.Region) .Include(x => x.RentalRequestRotationList) .First(a => a.Id == rentalRequestId); } return(new ObjectResult(new HetsResponse(result.ToRentalRequestViewModel()))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }
/// <summary> /// Update rental request /// </summary> /// <param name="id">id of Rental Request to update</param> /// <param name="item"></param> /// <response code="200">OK</response> /// <response code="404">Project not found</response> public virtual IActionResult RentalrequestsIdPutAsync(int id, RentalRequest item) { AdjustRecord(item); bool exists = _context.RentalRequests.Any(a => a.Id == id); if (exists && id == item.Id) { _context.RentalRequests.Update(item); // save the changes _context.SaveChanges(); return(new ObjectResult(new HetsResponse(item.ToRentalRequestViewModel()))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }
/// <summary> /// Move rental request to "In Progress" /// </summary> /// <param name="id"></param> /// <response>Rental Request</response> public virtual IActionResult RentalrequestsInProgressPostAsync(int id) { bool exists = _context.RentalRequests.Any(a => a.Id == id); if (exists) { // get rental request RentalRequest rentalRequest = _context.RentalRequests .Include(x => x.LocalArea) .Include(x => x.DistrictEquipmentType) .First(a => a.Id == id); // check if this record is in the correct state if (rentalRequest.Status.Equals("New", StringComparison.InvariantCultureIgnoreCase)) { // try to set the status SetRentalRequestStatusOnCreate(rentalRequest); // check the status and update the rotation list BuildRentalRequestRotationList(rentalRequest); } // save the changes _context.SaveChanges(); // get the complete and updated rental request rentalRequest = _context.RentalRequests .Include(x => x.FirstOnRotationList) .Include(x => x.RentalRequestRotationList) .ThenInclude(y => y.Equipment) .ThenInclude(r => r.EquipmentAttachments) .Include(x => x.RentalRequestRotationList) .ThenInclude(y => y.Equipment) .ThenInclude(e => e.Owner) .ThenInclude(c => c.PrimaryContact) .First(a => a.Id == id); return(new ObjectResult(new HetsResponse(rentalRequest.ToRentalRequestViewModel()))); } // no record to insert return(new ObjectResult(new HetsResponse("HETS-04", ErrorViewModel.GetDescription("HETS-04", _configuration)))); }
/// <summary> /// Get rental request by id /// </summary> /// <param name="id">id of Rental Request to fetch</param> /// <response code="200">OK</response> /// <response code="404">Project not found</response> public virtual IActionResult RentalrequestsIdGetAsync(int id) { bool exists = _context.RentalRequests.Any(a => a.Id == id); if (exists) { RentalRequest result = _context.RentalRequests .Include(x => x.RentalRequestAttachments) .Include(x => x.DistrictEquipmentType) .Include(x => x.LocalArea.ServiceArea.District.Region) .Include(x => x.Notes) .Include(x => x.Project.PrimaryContact) .First(a => a.Id == id); return(new ObjectResult(new HetsResponse(result.ToRentalRequestViewModel()))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }
/// <summary> /// Get rental request rotation list by rental request id /// </summary> /// <param name="id">id of Rental Request to fetch</param> /// <response code="200">OK</response> /// <response code="404">Project not found</response> public virtual IActionResult RentalrequestsIdRotationListGetAsync(int id) { bool exists = _context.RentalRequests.Any(a => a.Id == id); if (exists) { // check that we have a rotation list RentalRequest result = _context.RentalRequests .Include(x => x.DistrictEquipmentType) .ThenInclude(y => y.EquipmentType) .Include(x => x.FirstOnRotationList) .Include(x => x.RentalRequestAttachments) .Include(x => x.RentalRequestRotationList) .ThenInclude(y => y.Equipment) .ThenInclude(r => r.EquipmentAttachments) .Include(x => x.RentalRequestRotationList) .ThenInclude(y => y.Equipment) .ThenInclude(e => e.Owner) .ThenInclude(c => c.PrimaryContact) .First(a => a.Id == id); // resort list using: LocalArea / District Equipment Type and SenioritySortOrder (desc) result.RentalRequestRotationList = result.RentalRequestRotationList.OrderBy(e => e.RotationListSortOrder).ToList(); // return the number of blocks in this list RentalRequestViewModel rentalRequest = result.ToRentalRequestViewModel(); rentalRequest.NumberOfBlocks = GetNumberOfBlocks(result) + 1; // return view model return(new ObjectResult(new HetsResponse(rentalRequest))); } // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); }