コード例 #1
0
ファイル: RentalRequestService.cs プロジェクト: Kiesum/hets
        /// <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))));
        }
コード例 #2
0
ファイル: RentalRequestService.cs プロジェクト: Kiesum/hets
        /// <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))));
        }
コード例 #3
0
ファイル: RentalRequestService.cs プロジェクト: Kiesum/hets
        /// <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))));
        }
コード例 #4
0
ファイル: RentalRequestService.cs プロジェクト: Kiesum/hets
        /// <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))));
        }
コード例 #5
0
ファイル: RentalRequestService.cs プロジェクト: Kiesum/hets
        /// <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))));
        }