Пример #1
0
        public async Task <ApiResponse <WorkLogDto> > UpdateWorkLog(WorkLogUpdateRequest workLogUpdateRequest)
        {
            try
            {
                var workLog = await _worklogRepository.GetByIdAsync(workLogUpdateRequest.WorkLogId);

                if (workLog == null)
                {
                    return(new ApiResponse <WorkLogDto>()
                    {
                        StatusCode = 400,
                        IsSuccess = false,
                        ResponseException = new ApiError(ErrorCode.WorkLogNotFound, ErrorCode.WorkLogNotFound.GetDescription())
                    });
                }
                workLog.Description  = workLogUpdateRequest.Description;
                workLog.ActivityType = workLogUpdateRequest.ActivityType;
                workLog.StartDate    = workLogUpdateRequest.StartDate;
                workLog.TimeSpent    = workLogUpdateRequest.TimeSpent;
                workLog = await _worklogRepository.UpdateAsync(workLog);

                return(new ApiResponse <WorkLogDto>(_worklogMapper.MapToModel(workLog)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "An error occured while updating workLog");
                return(ApiResponse <WorkLogDto> .InternalError());
            }
        }
        public async Task UpdateWorkLog_WhenModelValid_UpdatesWorkLogInDatabase()
        {
            var request = new WorkLogUpdateRequest()
            {
                Description  = "description",
                ActivityType = ActivityType.Coding,
                StartDate    = DateTimeOffset.MaxValue.AddDays(-3333),
                TimeSpent    = TimeSpan.FromDays(2).Seconds,
                WorkLogId    = WorklogsDbSet.Get().First().Id
            };

            var httpResponse = await PostAsync(WorkLogControllerRoutes.UpdateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.VerifySuccessResponse();
            var worklog = await GetWorkLogFromDatabase(request.WorkLogId);

            worklog.Description.Should().Be(request.Description);
            worklog.ActivityType.Should().Be(request.ActivityType);
            worklog.StartDate.Should().Be(request.StartDate);
            worklog.TimeSpent.Should().Be(request.TimeSpent);
            await ReSeedDatabase();
        }
        public async Task UpdateWorkLog_WhenWorkLogNotFound_ReturnsWorkLogNotFound()
        {
            var request = new WorkLogUpdateRequest()
            {
                Description  = "description",
                ActivityType = ActivityType.Coding,
                StartDate    = DateTimeOffset.MaxValue.AddDays(-3333),
                TimeSpent    = TimeSpan.FromDays(2).Seconds,
                WorkLogId    = Guid.NewGuid()
            };

            var httpResponse = await PostAsync(WorkLogControllerRoutes.UpdateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.VerifyNotSuccessResponseWithErrorCodeAndMessage(ErrorCode.WorkLogNotFound);
        }
        public async Task UpdateWorkLog_WhenModelNotValid_UpdatesWorkLogInDatabase()
        {
            var request = new WorkLogUpdateRequest()
            {
                ActivityType = ActivityType.Coding,
                StartDate    = DateTimeOffset.MaxValue.AddDays(-3333),
                TimeSpent    = TimeSpan.FromDays(2).Seconds,
                WorkLogId    = WorklogsDbSet.Get().First().Id
            };

            var httpResponse = await PostAsync(WorkLogControllerRoutes.UpdateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            var response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.CheckValidationException(2);

            request = new WorkLogUpdateRequest()
            {
                ActivityType = ActivityType.Coding,
                TimeSpent    = TimeSpan.FromDays(2).Seconds,
                WorkLogId    = WorklogsDbSet.Get().First().Id
            };

            httpResponse = await PostAsync(WorkLogControllerRoutes.UpdateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.CheckValidationException(3);

            request = new WorkLogUpdateRequest()
            {
                ActivityType = ActivityType.Coding,
                WorkLogId    = WorklogsDbSet.Get().First().Id
            };

            httpResponse = await PostAsync(WorkLogControllerRoutes.UpdateWorkLog, request);

            httpResponse.EnsureSuccessStatusCode();
            response = await httpResponse.BodyAs <ApiResponse <WorkLogDto> >();

            response.CheckValidationException(4);
        }
 public async Task <ApiResponse <WorkLogDto> > UpdateWorkLog([FromBody] WorkLogUpdateRequest request)
 {
     return(await _workLogService.UpdateWorkLog(request));
 }