public async Task <IHttpActionResult> Put(AddTask model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } ICollection <Message> tasks = new List <Message>(); foreach (var domain in model.Domains) { foreach (string phone in domain.Phones) { Message task = new Message { PhoneNumber = phone, Content = domain.Message, StatusId = pendingId }; tasks.Add(task); } } try { await _repository.AddRangeAsync(tasks); } catch (DbUpdateException) { throw; } InfoTask result = new InfoTask { Domains = tasks.GroupBy(msg => msg.Content, (key, group) => new InfoDomain { Message = key, Tasks = group.Select(msg => (Info)msg).ToList() }).ToList() }; return(Ok(result)); }