예제 #1
0
        public virtual IActionResult RentalRequestsSearchGet([FromQuery] string localAreas, [FromQuery] string project, [FromQuery] string status, [FromQuery] DateTime?startDate, [FromQuery] DateTime?endDate)
        {
            int?[] localAreasArray = ArrayHelper.ParseIntArray(localAreas);

            // get initial results - must be limited to user's district
            int?districtId = UserAccountHelper.GetUsersDistrictId(_context, _httpContext);

            IQueryable <HetRentalRequest> data = _context.HetRentalRequest.AsNoTracking()
                                                 .Include(x => x.LocalArea.ServiceArea.District.Region)
                                                 .Include(x => x.DistrictEquipmentType)
                                                 .ThenInclude(y => y.EquipmentType)
                                                 .Include(x => x.Project.PrimaryContact)
                                                 .Include(x => x.RentalRequestStatusType)
                                                 .Include(x => x.HetRentalRequestRotationList)
                                                 .OrderByDescending(x => x.AppCreateTimestamp)
                                                 .Where(x => x.LocalArea.ServiceArea.DistrictId.Equals(districtId));

            if (localAreasArray != null && localAreasArray.Length > 0)
            {
                data = data.Where(x => localAreasArray.Contains(x.LocalArea.LocalAreaId));
            }

            if (project != null)
            {
                data = data.Where(x => x.Project.Name.ToLower().Contains(project.ToLower()));
            }

            if (startDate != null)
            {
                data = data.Where(x => x.ExpectedStartDate >= startDate);
            }

            if (endDate != null)
            {
                data = data.Where(x => x.ExpectedStartDate <= endDate);
            }

            if (status != null)
            {
                int?statusId = StatusHelper.GetStatusId(status, "rentalRequestStatus", _context);

                if (statusId != null)
                {
                    data = data.Where(x => x.RentalRequestStatusTypeId == statusId);
                }
            }

            // convert Rental Request Model to the "RentalRequestLite" Model
            List <RentalRequestLite> result = new List <RentalRequestLite>();

            foreach (HetRentalRequest item in data)
            {
                result.Add(RentalRequestHelper.ToLiteModel(item));
            }

            // return to the client
            return(new ObjectResult(new HetsResponse(result)));
        }
예제 #2
0
        public virtual IActionResult RentalRequestsIdHistoryGet([FromRoute] int id, [FromQuery] int?offset, [FromQuery] int?limit)
        {
            bool exists = _context.HetRentalRequest.Any(a => a.RentalRequestId == id);

            // not found
            if (!exists)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            return(new ObjectResult(new HetsResponse(RentalRequestHelper.GetHistoryRecords(id, offset, limit, _context))));
        }
예제 #3
0
        public virtual IActionResult RentalRequestsIdGet([FromRoute] int id)
        {
            bool exists = _context.HetRentalRequest.Any(a => a.RentalRequestId == id);

            // not found
            if (!exists)
            {
                return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            return(new ObjectResult(new HetsResponse(RentalRequestHelper.GetRecord(id, _context))));
        }
예제 #4
0
        public virtual IActionResult RentalRequestsIdRotationListIdGet([FromRoute] int id)
        {
            bool exists = _context.HetRentalRequest.Any(a => a.RentalRequestId == id);

            // not found
            if (!exists)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            // get the scoring rules
            SeniorityScoringRules scoringRules = new SeniorityScoringRules(_configuration);

            return(new ObjectResult(new HetsResponse(RentalRequestHelper.GetRecordWithRotationList(id, scoringRules, _context))));
        }
예제 #5
0
        public virtual IActionResult RentalRequestsIdHistoryPost([FromRoute] int id, [FromBody] HetHistory item)
        {
            bool exists = _context.HetRentalRequest.Any(a => a.RentalRequestId == id);

            if (exists)
            {
                HetHistory history = new HetHistory
                {
                    HistoryId       = 0,
                    HistoryText     = item.HistoryText,
                    CreatedDate     = item.CreatedDate,
                    RentalRequestId = id
                };

                _context.HetHistory.Add(history);
                _context.SaveChanges();
            }

            return(new ObjectResult(new HetsResponse(RentalRequestHelper.GetHistoryRecords(id, null, null, _context))));
        }
예제 #6
0
        public virtual IActionResult RentalRequestIdRotationListIdPut([FromRoute] int id, [FromBody] HetRentalRequestRotationList item)
        {
            // not found
            if (item == null)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            bool exists = _context.HetRentalRequest.Any(a => a.RentalRequestId == id);

            // not found
            if (!exists)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            int?statusId = StatusHelper.GetStatusId(HetRentalRequest.StatusInProgress, "rentalRequestStatus", _context);

            if (statusId == null)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-23", ErrorViewModel.GetDescription("HETS-23", _configuration))));
            }

            // check if we have the rental request that is In Progress
            exists = _context.HetRentalRequest
                     .Any(a => a.RentalRequestId == id &&
                          a.RentalRequestStatusTypeId == statusId);

            // rental request must be "in progress"
            if (!exists)
            {
                return(new BadRequestObjectResult(new HetsResponse("HETS-06", ErrorViewModel.GetDescription("HETS-06", _configuration))));
            }

            // get rental request record
            HetRentalRequest request = _context.HetRentalRequest
                                       .Include(x => x.Project)
                                       .ThenInclude(x => x.District)
                                       .Include(x => x.LocalArea)
                                       .Include(x => x.HetRentalRequestRotationList)
                                       .ThenInclude(x => x.Equipment)
                                       .First(a => a.RentalRequestId == id);

            // get rotation list record
            HetRentalRequestRotationList requestRotationList = _context.HetRentalRequestRotationList
                                                               .FirstOrDefault(a => a.RentalRequestRotationListId == item.RentalRequestRotationListId);

            // not found
            if (requestRotationList == null)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            // update rotation list record
            int tempEquipmentId = item.Equipment.EquipmentId;

            requestRotationList.ConcurrencyControlNumber = item.ConcurrencyControlNumber;
            requestRotationList.EquipmentId           = tempEquipmentId;
            requestRotationList.IsForceHire           = item.IsForceHire;
            requestRotationList.AskedDateTime         = DateTime.UtcNow;
            requestRotationList.Note                  = item.Note;
            requestRotationList.OfferRefusalReason    = item.OfferRefusalReason;
            requestRotationList.OfferResponse         = item.OfferResponse;
            requestRotationList.OfferResponseDatetime = item.OfferResponseDatetime;
            requestRotationList.WasAsked              = item.WasAsked;
            requestRotationList.OfferResponseNote     = item.OfferResponseNote;

            // do we need to create or modify a Rental Agreement?
            if (item.IsForceHire == true ||
                item.OfferResponse.Equals("Yes", StringComparison.InvariantCultureIgnoreCase))
            {
                // get rental agreement record
                HetRentalAgreement rentalAgreement = _context.HetRentalAgreement
                                                     .FirstOrDefault(a => a.RentalAgreementId == item.RentalAgreementId);

                // create rental agreement if it doesn't exist
                if (rentalAgreement == null)
                {
                    // generate the rental agreement number
                    string agreementNumber = RentalAgreementHelper.GetRentalAgreementNumber(item.Equipment, _context);

                    // get user info - agreement city
                    User   user          = UserAccountHelper.GetUser(_context, _httpContext);
                    string agreementCity = user.AgreementCity;

                    int?rateTypeId = StatusHelper.GetRatePeriodId(HetRatePeriodType.PeriodHourly, _context);
                    if (rateTypeId == null)
                    {
                        return(new NotFoundObjectResult(new HetsResponse("HETS-24", ErrorViewModel.GetDescription("HETS-24", _configuration))));
                    }

                    rentalAgreement = new HetRentalAgreement
                    {
                        ProjectId        = request.ProjectId,
                        DistrictId       = request.Project.District.DistrictId,
                        EquipmentId      = tempEquipmentId,
                        Number           = agreementNumber,
                        RatePeriodTypeId = (int)rateTypeId,
                        AgreementCity    = agreementCity
                    };

                    // add overtime rates
                    List <HetProvincialRateType> overtime = _context.HetProvincialRateType.AsNoTracking()
                                                            .Where(x => x.Overtime)
                                                            .ToList();

                    // agreement overtime records (default overtime flag)
                    foreach (HetProvincialRateType rate in overtime)
                    {
                        // add the rate
                        HetRentalAgreementRate newAgreementRate = new HetRentalAgreementRate
                        {
                            Comment           = rate.Description,
                            ComponentName     = rate.RateType,
                            Overtime          = true,
                            Active            = rate.Active,
                            IsIncludedInTotal = rate.IsIncludedInTotal,
                            Rate = rate.Rate
                        };

                        if (rentalAgreement.HetRentalAgreementRate == null)
                        {
                            rentalAgreement.HetRentalAgreementRate = new List <HetRentalAgreementRate>();
                        }

                        rentalAgreement.HetRentalAgreementRate.Add(newAgreementRate);
                    }

                    _context.HetRentalAgreement.Add(rentalAgreement);
                }

                int?statusIdAgreement = StatusHelper.GetStatusId(HetRentalAgreement.StatusActive, "rentalAgreementStatus", _context);
                if (statusIdAgreement == null)
                {
                    return(new NotFoundObjectResult(new HetsResponse("HETS-23", ErrorViewModel.GetDescription("HETS-23", _configuration))));
                }

                // update rental agreement
                rentalAgreement.RentalAgreementStatusTypeId = (int)statusIdAgreement;
                rentalAgreement.DatedOn                     = DateTime.UtcNow;
                rentalAgreement.EstimateHours               = request.ExpectedHours;
                rentalAgreement.EstimateStartWork           = request.ExpectedStartDate;
                rentalAgreement.RentalRequestId             = request.RentalRequestId;
                rentalAgreement.RentalRequestRotationListId = requestRotationList.RentalRequestRotationListId;

                // have to save the agreement
                _context.SaveChanges();

                // relate the new rental agreement to the original rotation list record
                int tempRentalAgreementId = rentalAgreement.RentalAgreementId;
                requestRotationList.RentalAgreementId = tempRentalAgreementId;
                requestRotationList.RentalAgreement   = rentalAgreement;
            }

            // can we "Complete" this rental request (if the Yes or Forced Hires = Request.EquipmentCount)
            int countOfYeses          = 0;
            int equipmentRequestCount = request.EquipmentCount;

            foreach (HetRentalRequestRotationList rotationList in request.HetRentalRequestRotationList)
            {
                if (rotationList.OfferResponse != null &&
                    rotationList.OfferResponse.Equals("Yes", StringComparison.InvariantCultureIgnoreCase))
                {
                    countOfYeses = countOfYeses + 1;
                }
                else if (rotationList.IsForceHire != null &&
                         rotationList.IsForceHire == true)
                {
                    countOfYeses = countOfYeses + 1;
                }
            }

            if (countOfYeses >= equipmentRequestCount)
            {
                int?statusIdComplete = StatusHelper.GetStatusId(HetRentalRequest.StatusComplete, "rentalRequestStatus", _context);
                if (statusIdComplete == null)
                {
                    return(new NotFoundObjectResult(new HetsResponse("HETS-23", ErrorViewModel.GetDescription("HETS-23", _configuration))));
                }

                request.RentalRequestStatusTypeId = (int)statusIdComplete;
                request.Status = "Complete";
                request.FirstOnRotationList = null;
            }

            // 1. get the number of blocks for this equipment type
            // 2. set which rotation list record is currently "active"
            int numberOfBlocks = EquipmentHelper.GetNumberOfBlocks(item.Equipment, _configuration);

            RentalRequestHelper.UpdateRotationList(request, numberOfBlocks, _context);

            // save the changes
            _context.SaveChanges();

            // get the scoring rules
            SeniorityScoringRules scoringRules = new SeniorityScoringRules(_configuration);

            return(new ObjectResult(new HetsResponse(RentalRequestHelper.GetRecordWithRotationList(id, scoringRules, _context))));
        }
예제 #7
0
        private IActionResult CreateRentalRequest(HetRentalRequest item, bool noProject = false)
        {
            // not found
            if (item == null)
            {
                return(new BadRequestObjectResult(new HetsResponse("HETS-04", ErrorViewModel.GetDescription("HETS-04", _configuration))));
            }

            // check if we have an existing rental request for the same
            // local area and equipment type - if so - throw an error
            // Per discussion with the business (19 Jan 2018):
            //    * Don't create a record as New if another Request exists
            //    * Simply give the user an error and not allow the new request
            //
            // Note: leaving the "New" code in place in case this changes in the future
            int?statusIdInProgress = StatusHelper.GetStatusId(HetRentalRequest.StatusInProgress, "rentalRequestStatus", _context);

            if (statusIdInProgress == null)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-23", ErrorViewModel.GetDescription("HETS-23", _configuration))));
            }

            List <HetRentalRequest> requests = _context.HetRentalRequest
                                               .Where(x => x.DistrictEquipmentTypeId == item.DistrictEquipmentType.DistrictEquipmentTypeId &&
                                                      x.LocalAreaId == item.LocalArea.LocalAreaId &&
                                                      x.RentalRequestStatusTypeId == statusIdInProgress)
                                               .ToList();

            // in Progress Rental Request already exists
            if (requests.Count > 0)
            {
                int quantity   = requests[0].EquipmentCount;
                int hiredCount = 0;

                foreach (HetRentalRequestRotationList equipment in requests[0].HetRentalRequestRotationList)
                {
                    if (equipment.OfferResponse != null &&
                        equipment.OfferResponse.Equals("Yes", StringComparison.InvariantCultureIgnoreCase))
                    {
                        hiredCount++;
                    }

                    if (equipment.IsForceHire != null &&
                        equipment.IsForceHire == true)
                    {
                        hiredCount++;
                    }
                }

                // ...Currently {0} of {1} requested equipment have been hired....
                string message = string.Format(ErrorViewModel.GetDescription("HETS-28", _configuration), hiredCount, quantity);
                return(new BadRequestObjectResult(new HetsResponse("HETS-28", message)));
            }

            // create new rental request
            HetRentalRequest rentalRequest = new HetRentalRequest
            {
                LocalAreaId               = item.LocalArea.LocalAreaId,
                DistrictEquipmentTypeId   = item.DistrictEquipmentType.DistrictEquipmentTypeId,
                RentalRequestStatusTypeId = (int)statusIdInProgress,
                EquipmentCount            = item.EquipmentCount,
                ExpectedEndDate           = item.ExpectedEndDate,
                ExpectedStartDate         = item.ExpectedStartDate,
                ExpectedHours             = item.ExpectedHours
            };

            // is this a "project-less" request? - can't be hired from
            if (!noProject)
            {
                rentalRequest.ProjectId = item.Project.ProjectId;
            }

            // build new list
            try
            {
                rentalRequest = RentalRequestHelper.CreateRotationList(rentalRequest, _context, _configuration);
            }
            catch (Exception e)
            {
                // check if this a "no available equipment exception"
                if (e.Message == "HETS-42")
                {
                    return(new NotFoundObjectResult(new HetsResponse("HETS-42", ErrorViewModel.GetDescription("HETS-42", _configuration))));
                }

                Console.WriteLine(e);
                throw;
            }

            // check if we have an existing "In Progress" request
            // for the same Local Area and Equipment Type
            string tempStatus = RentalRequestHelper.RentalRequestStatus(rentalRequest, _context);

            statusIdInProgress = StatusHelper.GetStatusId(tempStatus, "rentalRequestStatus", _context);
            if (statusIdInProgress == null)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-23", ErrorViewModel.GetDescription("HETS-23", _configuration))));
            }

            rentalRequest.RentalRequestStatusTypeId = (int)statusIdInProgress;

            if (item.HetRentalRequestAttachment != null &&
                item.HetRentalRequestAttachment.Count > 0)
            {
                HetRentalRequestAttachment attachment = new HetRentalRequestAttachment
                {
                    Attachment = item.HetRentalRequestAttachment.ElementAt(0).Attachment
                };

                rentalRequest.HetRentalRequestAttachment.Add(attachment);
            }

            // save the changes
            _context.HetRentalRequest.Add(rentalRequest);
            _context.SaveChanges();

            int id = rentalRequest.RentalRequestId;

            // retrieve updated rental request to return to ui
            return(new ObjectResult(new HetsResponse(RentalRequestHelper.GetRecord(id, _context))));
        }
예제 #8
0
        public virtual IActionResult RentalRequestsIdPut([FromRoute] int id, [FromBody] HetRentalRequest item)
        {
            if (item == null || id != item.RentalRequestId)
            {
                // not found
                return(new NotFoundObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            bool exists = _context.HetRentalRequest.Any(a => a.RentalRequestId == id);

            // not found
            if (!exists)
            {
                return(new NotFoundObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration))));
            }

            // get record
            HetRentalRequest rentalRequest = _context.HetRentalRequest
                                             .Include(x => x.LocalArea.ServiceArea.District.Region)
                                             .Include(x => x.Project)
                                             .ThenInclude(c => c.PrimaryContact)
                                             .Include(x => x.HetRentalRequestAttachment)
                                             .Include(x => x.DistrictEquipmentType)
                                             .Include(x => x.HetRentalRequestRotationList)
                                             .ThenInclude(y => y.Equipment)
                                             .First(a => a.RentalRequestId == id);

            // need to check if we are going over the "count" and close this request
            int hiredCount = 0;

            foreach (HetRentalRequestRotationList equipment in rentalRequest.HetRentalRequestRotationList)
            {
                if (equipment.OfferResponse != null &&
                    equipment.OfferResponse.Equals("Yes", StringComparison.InvariantCultureIgnoreCase))
                {
                    hiredCount++;
                }

                if (equipment.IsForceHire != null &&
                    equipment.IsForceHire == true)
                {
                    hiredCount++;
                }
            }

            // has the count changed - and is now less than the already "hired" equipment
            if (item.EquipmentCount != rentalRequest.EquipmentCount &&
                hiredCount > item.EquipmentCount)
            {
                //"HETS-07": "Rental Request count cannot be less than equipment already hired"
                return(new BadRequestObjectResult(new HetsResponse("HETS-07", ErrorViewModel.GetDescription("HETS-07", _configuration))));
            }

            // if the number of hired records is now "over the count" - then close
            if (hiredCount >= item.EquipmentCount)
            {
                int?statusIdComplete = StatusHelper.GetStatusId(HetRentalRequest.StatusComplete, "rentalRequestStatus", _context);
                if (statusIdComplete == null)
                {
                    return(new BadRequestObjectResult(new HetsResponse("HETS-23", ErrorViewModel.GetDescription("HETS-23", _configuration))));
                }

                item.RentalRequestStatusTypeId = (int)statusIdComplete;
                item.Status = "Complete";
                item.FirstOnRotationList = null;
            }

            int?statusId = StatusHelper.GetStatusId(item.Status, "rentalRequestStatus", _context);

            if (statusId == null)
            {
                return(new BadRequestObjectResult(new HetsResponse("HETS-23", ErrorViewModel.GetDescription("HETS-23", _configuration))));
            }

            // update rental request
            rentalRequest.ConcurrencyControlNumber  = item.ConcurrencyControlNumber;
            rentalRequest.RentalRequestStatusTypeId = (int)statusId;
            rentalRequest.EquipmentCount            = item.EquipmentCount;
            rentalRequest.ExpectedEndDate           = item.ExpectedEndDate;
            rentalRequest.ExpectedStartDate         = item.ExpectedStartDate;
            rentalRequest.ExpectedHours             = item.ExpectedHours;
            rentalRequest.HetDigitalFile            = item.HetDigitalFile;
            rentalRequest.FirstOnRotationList       = item.FirstOnRotationList;

            // do we have any attachments (only a single string is ever stored)
            if (item.HetRentalRequestAttachment != null &&
                item.HetRentalRequestAttachment.Count > 0)
            {
                if (rentalRequest.HetRentalRequestAttachment == null)
                {
                    rentalRequest.HetRentalRequestAttachment = new List <HetRentalRequestAttachment>();
                }

                HetRentalRequestAttachment attachment = new HetRentalRequestAttachment
                {
                    Attachment = item.HetRentalRequestAttachment.ElementAt(0).Attachment
                };

                if (rentalRequest.HetRentalRequestAttachment.Count > 0)
                {
                    rentalRequest.HetRentalRequestAttachment.ElementAt(0).Attachment = attachment.Attachment;
                }
                else
                {
                    rentalRequest.HetRentalRequestAttachment.Add(attachment);
                }
            }

            // save the changes
            _context.SaveChanges();

            // retrieve updated rental request to return to ui
            return(new ObjectResult(new HetsResponse(RentalRequestHelper.GetRecord(id, _context))));
        }
예제 #9
0
        public virtual IActionResult RentalRequestsHiresGet([FromQuery] string localAreas, [FromQuery] string projects,
                                                            [FromQuery] string owners, [FromQuery] string equipment)
        {
            int?[] localAreasArray = ArrayHelper.ParseIntArray(localAreas);
            int?[] projectArray    = ArrayHelper.ParseIntArray(projects);
            int?[] ownerArray      = ArrayHelper.ParseIntArray(owners);
            int?[] equipmentArray  = ArrayHelper.ParseIntArray(equipment);

            // get initial results - must be limited to user's district
            int?districtId = UserAccountHelper.GetUsersDistrictId(_context, _httpContext);

            // get fiscal year
            HetDistrictStatus district = _context.HetDistrictStatus.AsNoTracking()
                                         .FirstOrDefault(x => x.DistrictId == districtId);

            if (district?.CurrentFiscalYear == null)
            {
                return(new BadRequestObjectResult(new HetsResponse("HETS-30", ErrorViewModel.GetDescription("HETS-30", _configuration))));
            }

            int      fiscalYear  = (int)district.CurrentFiscalYear; // status table uses the start of the year
            DateTime fiscalStart = new DateTime(fiscalYear, 3, 31); // look for all records AFTER the 31st

            IQueryable <HetRentalRequestRotationList> data = _context.HetRentalRequestRotationList.AsNoTracking()
                                                             .Include(x => x.RentalRequest)
                                                             .ThenInclude(y => y.LocalArea)
                                                             .ThenInclude(z => z.ServiceArea)
                                                             .Include(x => x.RentalRequest)
                                                             .ThenInclude(y => y.Project)
                                                             .Include(x => x.Equipment)
                                                             .ThenInclude(y => y.Owner)
                                                             .Where(x => x.RentalRequest.LocalArea.ServiceArea.DistrictId.Equals(districtId) &&
                                                                    x.AskedDateTime > fiscalStart &&
                                                                    (x.IsForceHire == true || x.OfferResponse.ToLower() == "no"));

            if (localAreasArray != null && localAreasArray.Length > 0)
            {
                data = data.Where(x => localAreasArray.Contains(x.RentalRequest.LocalAreaId));
            }

            if (projectArray != null && projectArray.Length > 0)
            {
                data = data.Where(x => projectArray.Contains(x.RentalRequest.ProjectId));
            }

            if (ownerArray != null && ownerArray.Length > 0)
            {
                data = data.Where(x => ownerArray.Contains(x.Equipment.OwnerId));
            }

            if (equipmentArray != null && equipmentArray.Length > 0)
            {
                data = data.Where(x => equipmentArray.Contains(x.EquipmentId));
            }

            // convert Rental Request Model to the "RentalRequestHires" Model
            List <RentalRequestHires> result = new List <RentalRequestHires>();

            foreach (HetRentalRequestRotationList item in data)
            {
                HetUser user = _context.HetUser.AsNoTracking()
                               .FirstOrDefault(x => x.SmUserId == item.AppCreateUserid);

                result.Add(RentalRequestHelper.ToHiresModel(item, user));
            }

            // return to the client
            return(new ObjectResult(new HetsResponse(result)));
        }