public async Task <ActionResult <ProjectTaskPerformer> > CreateItem([FromForm] ProjectTaskPerformer item)
        {
            try
            {
                if (item.ProjectTaskPerformerId > 0)
                {
                    return(BadRequest("Идентификатор записи должен быть равен 0"));
                }

                if (item.ProjectTaskId == 0)
                {
                    return(BadRequest("Идентификатор задачи не должен быть равен 0"));
                }

                if (item.UserId == 0)
                {
                    return(BadRequest("Идентификатор пользователя не должен быть равен 0"));
                }

                var existItems = await _projectTaskPerformerRepository
                                 .FindAsync(e => e.UserId.Equals(item.UserId) && e.ProjectTaskId.Equals(item.ProjectTaskId) && !e.Deleted);

                if (existItems.Count > 0)
                {
                    return(BadRequest("Указанный исполнитель уже назначен на эту задачу"));
                }

                var user = await _userRepository.FindByIdAsync(item.UserId);

                if (user == null)
                {
                    return(BadRequest("Пользователь не найден"));
                }


                var task = await _projectTaskRepository.FindByIdAsync(item.UserId);

                if (task == null)
                {
                    return(BadRequest("Задача не найдена"));
                }

                item.User = user;
                item.Task = task;

                await _projectTaskPerformerRepository.CreateAsync(item);

                return(item);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
예제 #2
0
        public async Task <IActionResult> DeleteItem(int id)
        {
            try
            {
                var item = await _projectTaskRepository.FindByIdAsync(id);

                if (item == null)
                {
                    return(NotFound());
                }
                else
                {
                    item.Deleted = true;

                    item.DateDeleted = DateTime.Now;

                    var userDeleted = (await _userRepository.FindAsync(e => !e.Deleted && e.Login.ToLower().Equals(_userService.userLogin.ToLower()))).SingleOrDefault();
                    item.LoginDeleted = userDeleted != null ? userDeleted.ShortName : _userService.userLogin;

                    await _projectTaskRepository.EditAsync(item);

                    // удалить всех исполнителей
                    var performers = await _projectTaskPerformerRepository.FindAsync(e => e.ProjectTaskId.Equals(id) && !e.Deleted);

                    foreach (var performer in performers)
                    {
                        performer.Deleted = true;
                    }

                    await _projectTaskPerformerRepository.EditAsync(performers.ToList());

                    return(NoContent());
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }