public static RunawayRequestDto ToDto(this RunawayRequest runawayRequest)
 {
     return(new RunawayRequestDto
     {
         RequesterName = GetUserFullName(runawayRequest.Requester),
         EstablishmentName = runawayRequest.Establishment.Name,
         RequestDate = runawayRequest.CreationDate,
         CancellationDate = runawayRequest.CancellationDate,
         // TODO : Request Information
         CancellationReason = runawayRequest.CancellationReason.ToString(),
         CancellationReasonId = (int)runawayRequest.CancellationReason,
         RunawayDate = runawayRequest.RunawayDate,
         Status = runawayRequest.Status.ToString(),
         StatusId = (int)runawayRequest.Status,
         RunawayComplaintRequests = runawayRequest.RunawayComplaints?.ToDto()
     });
 }
예제 #2
0
        public IEnumerable <RunawayRequest> GetRunawayRequestByIdNumber(long idNumber)
        {
            var allServiceLogs = _serviceLogRepository.Table.Where(s => s.Laborer.IdNo == idNumber.ToString() &&
                                                                   (s.ServiceId == (int)ServiceList.LaborRunAwayService ||
                                                                    s.ServiceId == (int)ServiceList.CancelRunaway)).ToList();

            if (!allServiceLogs.Any())
            {
                return(null);
            }

            var runawayRequests = allServiceLogs
                                  .Where(s => s.ServiceId == (int)ServiceList.LaborRunAwayService)
                                  .Select(s =>
            {
                RunawayRequest runawayRequest = MapRunawayRequest(s);

                runawayRequest.Status             = RunawayRequestStatusList.Cancelled;
                runawayRequest.CancellationReason = RunawayCancellationReasonList.Establishment;
                runawayRequest.CancellationDate   = allServiceLogs.Where(sl => sl.CreationDate > s.CreationDate && sl.ServiceId == (int)ServiceList.CancelRunaway).OrderBy(sl => sl.CreationDate).FirstOrDefault().CreationDate;

                return(runawayRequest);
            }).ToList();


            var laborer = allServiceLogs.First().Laborer;

            if (laborer.StatusId == (int)LaborerStatusList.Runner)
            {
                runawayRequests.First().Status = RunawayRequestStatusList.Active;
            }
            else if (laborer.StatusId == (int)LaborerStatusList.Working &&
                     runawayRequests.First().CancellationDate == null &&
                     laborer.LaborerStatusModificationDate.HasValue)
            {
                runawayRequests.First().CancellationDate = laborer.LaborerStatusModificationDate.Value;
            }

            return(runawayRequests);
        }