public async Task <int> SaveExpert(ExpertModel model) { var entity = new ExpertMaterial { Caption = model.Title, Content = model.Content, LastChange = DateTime.Now, User = await this.usersService.GetCurrentApplicationUser(), }; model.Files?.ForEach(f => { var fileEntity = new ExpertDocument { Id = f.Id, Content = Convert.FromBase64String(f.Base64Content), MimeType = f.MimeType, Name = f.Filename, LanguageId = f.Language.Id }; entity.ExpertDocuments.Add(fileEntity); }); var caseInserted = this.context.ExpertMaterials.Add(entity); await this.context.SaveChangesAsync(); return(caseInserted.Entity.Id); }
public async Task DeleteExpert(int id) { var record = await this.context.ExpertMaterials.Where(c => c.Id == id).Select(c => new { c.Id, c.UserId, OrgName = c.User.Organization.ShortName, c.IsDeleted }).FirstOrDefaultAsync(); if (record == null) { throw new NotFoundException($"Expert material with id {id} not found"); } var hasRightToDelete = this.HasEditDeleteRights(record.UserId, record.OrgName); if (hasRightToDelete) { var expertEntity = new ExpertMaterial { Id = record.Id }; this.context.ExpertMaterials.Attach(expertEntity); expertEntity.IsDeleted = true; await this.context.SaveChangesAsync(); } else { throw new NotAuthorizedException(); } }