public async Task <List <Result> > CreateChronicleAsync(Models.Other.CRUD.Chronicle chronicle) { var newChronicle = _mapper.Map <Database.Entities.Other.Chronicle>(chronicle); var results = new List <Result>(); results.Update(await _dbClient.CreateChronicleAsync(newChronicle), ResultMessages.CreateChronicle); if (results.Any(r => r.Type == ResultType.Failure)) { return(results); } var nullableNewChronicleId = (await _dbClient.GetChronicleOnSlugAsync(newChronicle.Slug))?.Id; if (nullableNewChronicleId == null) { return(results); } var newChronicleId = (int)nullableNewChronicleId; if (chronicle.CategoryIds.Any()) { await _dbClient.AddCategoriesToChronicleAsync(newChronicleId, chronicle.CategoryIds); } if (chronicle.NewCategoryNames != null && chronicle.NewCategoryNames.Any()) { await _dbClient.CreateNewChronicleCategoriesAndConnectToNewChronicleWithIdAsync(newChronicleId, chronicle.NewCategoryNames.ToList()); } return(results); }
public Database.Entities.Other.Chronicle Convert(Models.Other.CRUD.Chronicle source, Database.Entities.Other.Chronicle destination, ResolutionContext context) { return(new Database.Entities.Other.Chronicle { Id = source.Id, Title = source.Title, Text = source.Text, Slug = new SlugHelper().GenerateSlug(source.Title), WrittenByUserId = source.WrittenByUserId, Published = !string.IsNullOrEmpty(source.Published) ? System.Convert.ToDateTime(source.Published) : DateTime.Now }); }
public async Task <List <Result> > UpdateChronicleAsync(Models.Other.CRUD.Chronicle chronicle) { var existingChronicle = _mapper.Map <Database.Entities.Other.Chronicle>(chronicle); var results = new List <Result>(); results.Update(await _dbClient.UpdateChronicleAsync(existingChronicle), ResultMessages.UpdateChronicle); if (results.Any(r => r.Type == ResultType.Failure)) { return(results); } await _dbClient.AddOrRemoveCategoriesToExistingChronicleAsync(existingChronicle.Id, chronicle.CategoryIds); if (chronicle.NewCategoryNames != null && chronicle.NewCategoryNames.Any()) { await _dbClient.CreateNewChronicleCategoriesAndConnectToNewChronicleWithIdAsync(existingChronicle.Id, chronicle.NewCategoryNames.ToList()); } return(results); }
public Task <List <Result> > Update([FromBody] Models.Other.CRUD.Chronicle chronicle) { _logger.Debug("Requesting to update an existing chronicle"); return(_chronicleRepository.UpdateChronicleAsync(chronicle)); }