예제 #1
0
        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);
        }