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();
            }
        }