public void CanListRequestStatuses()
        {
            // Establish Context
            IList <RequestStatusDto> requestStatusSummariesToExpect = new List <RequestStatusDto>();

            var requestStatusDto = new RequestStatusDto();

            requestStatusSummariesToExpect.Add(requestStatusDto);

            _requestStatusManagementService.Expect(r => r.GetRequestStatusSummaries())
            .Return(requestStatusSummariesToExpect);

            // Act
            ViewResult result = _requestStatusesController.Index().AssertViewRendered();

            // Assert
            result.ViewData.Model.ShouldNotBeNull();
            (result.ViewData.Model as IList <RequestStatusDto>).ShouldNotBeNull();
            (result.ViewData.Model as IList <RequestStatusDto>).Count.ShouldEqual(1);
        }
Example #2
0
        public void CanGetRequestStatusSummaries()
        {
            // Establish Context
            IList <RequestStatusDto> requestStatusSummariesToExpect = new List <RequestStatusDto>();

            var requestStatusDto = new RequestStatusDto();

            requestStatusSummariesToExpect.Add(requestStatusDto);

            _requestStatusRepository.Expect(r => r.GetRequestStatusSummaries())
            .Return(requestStatusSummariesToExpect);

            // Act
            IList <RequestStatusDto> requestStatusSummariesRetrieved =
                _requestStatusManagementService.GetRequestStatusSummaries();

            // Assert
            requestStatusSummariesRetrieved.ShouldNotBeNull();
            requestStatusSummariesRetrieved.Count.ShouldEqual(1);
            requestStatusSummariesRetrieved[0].ShouldNotBeNull();
            requestStatusSummariesRetrieved[0].ShouldEqual(requestStatusDto);
        }
Example #3
0
        public void UpdateListRequestStatus(RequestStatusDto requestStatusDto)
        {
            foreach (var requestDto in requestStatusDto.UpdateRequestDtos)
            {
                var request = _requestRepository.GetById(requestDto.RequestId);
                if (request != null)
                {
                    //if courier Declined or Completed request
                    if (requestDto.RequestType == (int)StatusRequest.Declined ||
                        requestDto.RequestType == (int)StatusRequest.Completed)
                    {
                        var requestHistory = new RequestHistory
                        {
                            RequestId         = requestDto.RequestId,
                            CourierId         = requestDto.CourierId,
                            LastRequestStatus = request.Status,
                            ActionType        = requestDto.RequestType == (int)StatusRequest.Declined
                                ? (int)HistoryRequestActionType.Declined
                                : (int)HistoryRequestActionType.Completed,
                            Comment = requestDto.RequestType == (int)StatusRequest.Declined
                                ? "Declined request"
                                : "Completed request",
                            TimeChanged = DateTime.UtcNow
                        };
                        _requestHistoryRepository.Add(requestHistory);

                        switch (requestDto.RequestType)
                        {
                        case (int)StatusRequest.Declined:
                            _systemEventRepository.Add(EventMessage.CourierDeclinedRequest,
                                                       new Dictionary <EventMessageParam, string>
                            {
                                { EventMessageParam.Courier, request.Courier.User.FullName },
                                { EventMessageParam.Request, request.RequestNo }
                            });
                            break;

                        case (int)StatusRequest.Completed:
                            _systemEventRepository.Add(EventMessage.CourierCompletedRequest,
                                                       new Dictionary <EventMessageParam, string>
                            {
                                { EventMessageParam.Courier, request.Courier.User.FullName },
                                { EventMessageParam.Request, request.RequestNo }
                            });
                            break;
                        }
                    }
                    //if request still belong courier
                    if (request.CourierId == requestDto.CourierId &&
                        request.Status != (int)StatusRequest.Cancelled &&
                        !(request.Status == (int)StatusRequest.Abandoned &&
                          requestDto.RequestType == (int)StatusRequest.Waiting))
                    {
                        request.ReceivedTime    = requestDto.ReceivedTime;
                        request.AcceptedTime    = requestDto.AcceptedTime;
                        request.RejectedTime    = requestDto.RejectedTime;
                        request.ActualStartTime = requestDto.ActualStartTime;
                        request.ActualEndTime   = requestDto.ActualEndTime;
                        request.IsAgreed        = requestDto.IsAgreed;
                        request.CompleteNote    = requestDto.CompleteNote;
                        switch (requestDto.RequestType)
                        {
                        case (int)StatusRequest.Received:
                            _systemEventRepository.Add(EventMessage.CourierAcceptedRequest,
                                                       new Dictionary <EventMessageParam, string>
                            {
                                { EventMessageParam.Courier, request.Courier.User.FullName },
                                { EventMessageParam.Request, request.RequestNo }
                            });
                            break;

                        case (int)StatusRequest.Started:
                            _systemEventRepository.Add(EventMessage.CourierStartedRequest,
                                                       new Dictionary <EventMessageParam, string>
                            {
                                { EventMessageParam.Courier, request.Courier.User.FullName },
                                { EventMessageParam.Request, request.RequestNo }
                            });
                            break;
                        }

                        request.Status = requestDto.RequestType;
                        if (requestDto.PriorityNumber != 0)
                        {
                            request.PriorityNumber = requestDto.PriorityNumber;
                        }
                        if (requestDto.Signature != null)
                        {
                            request.Signature = Convert.FromBase64String(requestDto.Signature.Replace("\\", ""));
                        }
                        if (requestDto.CompletePicture != null)
                        {
                            request.CompletePicture = Convert.FromBase64String(requestDto.CompletePicture.Replace("\\", ""));
                        }
                        if (requestDto.NoteDto != null)
                        {
                            foreach (var noteDto in requestDto.NoteDto)
                            {
                                request.NoteRequests.Add(new NoteRequest
                                {
                                    Description = noteDto.Description,
                                    CreateTime  = noteDto.Date,
                                    CourierId   = request.CourierId
                                });
                            }
                        }

                        _requestRepository.Update(request);
                    }
                }
            }
            _requestRepository.Commit();
        }
Example #4
0
 public IHttpActionResult UpdateListRequestStatus(RequestStatusDto requestStatusDto)
 {
     _requestService.UpdateListRequestStatus(requestStatusDto);
     return(Ok());
 }