public async Task <ActionResult <ProjectTaskViewModel> > CreateItem([FromForm] ProjectTaskViewModel item) { try { if (item.ProjectTaskId > 0) { return(BadRequest("Идентификатор записи должен быть равен 0")); } var project = await ProjectByIdAsync(item.ProjectId); if (project == null) { return(BadRequest("Выбранный проект не найден")); } var group = await GroupByIdAsync(item.GroupId); if (group == null) { return(BadRequest("Выбранная группа не найдена")); } var taskType = await TaskTypeByIdAsync(item.TaskTypeId); if (taskType == null) { return(BadRequest("Выбранный тип задачи не найден")); } var taskStatus = await ProjectTaskStatusByIdAsync(item.ProjectTaskStatusId); if (taskStatus == null) { return(BadRequest("Выбранный статус не найден")); } var block = await BlockByIdAsync(item.BlockId); var newItem = _mapper.Map <ProjectTask>(item); newItem.Project = project; newItem.Group = group; newItem.TaskStatus = taskStatus; newItem.TaskType = taskType; if (block != null) { newItem.Block = block; } newItem.DateCreated = DateTime.Now; var userCreated = (await _userRepository.FindAsync(e => !e.Deleted && e.Login.ToLower().Equals(_userService.userLogin.ToLower()))).SingleOrDefault(); newItem.LoginCreated = userCreated != null ? userCreated.ShortName : _userService.userLogin; newItem.ProjectTaskPerformers = new List <ProjectTaskPerformer>(); if (!string.IsNullOrEmpty(item.Users)) { var userIds = item.Users.Split(",").Select(e => int.Parse(e)).ToList(); foreach (int userId in userIds) { var user = await _userRepository.FindByIdAsync(userId); newItem.ProjectTaskPerformers.Add(new ProjectTaskPerformer() { User = user }); } } await _projectTaskRepository.CreateAsync(newItem); // формируем почтовые уведомления await _mailRepository.CreateMailsForNewPerformersAsync(newItem.ProjectTaskPerformers.Select(e => e.User).ToList(), newItem); return(_mapper.Map <ProjectTaskViewModel>(newItem)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }