public async Task <IHttpActionResult> Post(int id, [FromBody] ProviderDomainsBindingModel data) { // sanity checks if (data == null) { return(BadRequest("Недостаточно информации для добавления тематик")); } OperationResult <IEnumerable <ServiceDomainInfo> > result = await DomainsManager.AddDomainsAsync(id, data, UserId); if (result.Success) { var newComers = Mapper.Map <IEnumerable <ServiceDomainViewModel> >(result.Data); return(Ok(newComers)); } else { return(BadRequest(result.ErrorMessage)); } }
public async Task <OperationResult <IEnumerable <ServiceDomainInfo> > > AddDomainsAsync(int serviceLanguageInfoId, ProviderDomainsBindingModel domains, int userId) { var newDomains = new List <ServiceDomainInfo>(); foreach (var id in domains.DomainIds) { var newDomain = new ServiceDomainInfo { CreatedDate = DateTime.Now, DomainId = id, QA = new QA { Comment = domains.Comment, Grade = 0.00M, Stars = (Stars)domains.Stars }, LanguageId = serviceLanguageInfoId }; newDomains.Add(newDomain); Repo.AddOrUpdate(newDomain); try { await Repo.SaveAsUserAsync(userId); Repo.BindGrades(newDomain); await Repo.SaveAsUserAsync(userId); } catch (Exception ex) { return(OperationResult <IEnumerable <ServiceDomainInfo> > .Error(string.Format("{0}{1}.", CANNOT_ADD_DOMAINS, ex.Message))); } } ; var newDomainIds = newDomains.Select(x => x.Id); var result = Repo .Get(x => newDomainIds.Contains(x.Id)) .Include(x => x.Domain) .Include(x => x.CreatedBy) .Include(x => x.ModifiedBy) .ToList(); return(OperationResult <IEnumerable <ServiceDomainInfo> > .Ok(result)); }