Exemplo n.º 1
0
        public async Task <bool> ChangeDataAsync(ProjectDetailsChangeDto input)
        {
            var project = await this.context.Projects.FirstOrDefaultAsync(p => p.Id == input.Id);

            if (project == null)
            {
                throw new NullReferenceException(string.Format(ErrorMessages.ProjectIdNullReference, input.Id));
            }

            if (input.Deadline != "-" && input.Deadline != null)
            {
                project.Deadline = DateTime.ParseExact(input.Deadline, Constants.DATETIME_FORMAT, CultureInfo.InvariantCulture);
            }
            else if (input.Deadline == null)
            {
                project.Deadline = null;
            }

            await this.ChangeDataEndDateStatusProgressLogic(project, input);

            this.context.Projects.Update(project);
            var result = await this.context.SaveChangesAsync();

            return(result > 0);
        }
Exemplo n.º 2
0
        private async Task ChangeDataEndDateStatusProgressLogic(Project project, ProjectDetailsChangeDto input)
        {
            var projectStatusName = await this.statusesService.GetStatusNameByIdAsync(project.StatusId);

            var inputStatusName = await this.statusesService.GetStatusNameByIdAsync(input.StatusId);

            if ((input.EndDate != Constants.CHANGE_DATA_EMPTY_DATE && input.EndDate != null) && projectStatusName != Constants.STATUS_COMPLETED)
            {
                project.Progress = Constants.PROGRESS_MAX_VALUE;
                project.EndDate  = DateTime.ParseExact(input.EndDate, Constants.DATETIME_FORMAT, CultureInfo.InvariantCulture);
                project.StatusId = await this.statusesService.GetStatusIdByNameAsync(Constants.STATUS_COMPLETED);
            }
            else if ((input.EndDate != "-" && input.EndDate != null) && projectStatusName == Constants.STATUS_COMPLETED)
            {
                if (inputStatusName != Constants.STATUS_COMPLETED)
                {
                    project.EndDate  = null;
                    project.StatusId = input.StatusId;
                }

                project.Progress = input.Progress;
            }
            else if ((input.EndDate == Constants.CHANGE_DATA_EMPTY_DATE || input.EndDate == null) && projectStatusName == Constants.STATUS_COMPLETED)
            {
                project.EndDate = null;

                if (inputStatusName == Constants.STATUS_COMPLETED)
                {
                    project.StatusId = await this.statusesService.GetStatusIdByNameAsync(Constants.STATUS_INPROGRESS);
                }
                else
                {
                    project.StatusId = input.StatusId;
                }

                project.Progress = input.Progress;
            }
            else if ((input.EndDate == Constants.CHANGE_DATA_EMPTY_DATE || input.EndDate == null) && projectStatusName != Constants.STATUS_COMPLETED)
            {
                if (inputStatusName == Constants.STATUS_COMPLETED)
                {
                    project.EndDate  = DateTime.UtcNow;
                    project.StatusId = input.StatusId;
                    project.Progress = Constants.PROGRESS_MAX_VALUE;
                }
                else
                {
                    project.Progress = input.Progress;
                    project.StatusId = input.StatusId;
                }
            }
        }