Пример #1
0
        public async Task <Result <SearchCriteriaDb> > AddAsync(SearchCriteriaDb criteriaDb)
        {
            try
            {
                List <CourseCategoryDb> courseCategories = new List <CourseCategoryDb>();
                List <DomainDb>         domains          = new List <DomainDb>();
                CourseCategoryDb        categoryDb;
                DomainDb domainDb;

                foreach (var el in criteriaDb.CourseCategories)
                {
                    categoryDb = context.CourseCategories
                                 .FirstOrDefault(x => x.Name == el.Name && x.Title == el.Title);
                    courseCategories.Add(categoryDb ??
                                         new CourseCategoryDb()
                    {
                        Name  = el.Name,
                        Title = el.Title
                    });
                }

                foreach (var el in criteriaDb.Domains)
                {
                    domainDb = context.Domains
                               .FirstOrDefault(x => x.DomainURL == el.DomainURL);
                    domains.Add(domainDb ??
                                new DomainDb()
                    {
                        DomainURL  = el.DomainURL,
                        DomainName = el.DomainName
                    });
                }
                criteriaDb.CourseCategories = courseCategories;
                criteriaDb.Domains          = domains;


                context.SearchCriterias.Add(criteriaDb);
                await context.SaveChangesAsync().ConfigureAwait(false);

                return(Result <SearchCriteriaDb> .Ok(criteriaDb));
            }
            catch (DbUpdateConcurrencyException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"Cannot save SearchCriteria. {e.Message}"));
            }
            catch (DbUpdateException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"Cannot save SearchCriteria. Duplicate field. {e.Message}"));
            }
            catch (DbEntityValidationException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"Invalid SearchCriteria. {e.Message}"));
            }
        }
Пример #2
0
        public async Task <Result <SearchCriteriaDb> > DeleteAsync(SearchCriteriaDb criteriaDb)
        {
            try
            {
                context.SearchCriterias.Remove(context.SearchCriterias.FirstOrDefault(x => x.Id == criteriaDb.Id));
                await context.SaveChangesAsync().ConfigureAwait(false);

                return(Result <SearchCriteriaDb> .Ok(criteriaDb));
            }
            catch (DbUpdateConcurrencyException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"SearchCriteria not deleted. {e.Message}"));
            }
            catch (DbEntityValidationException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"Invalid SearchCriteria. {e.Message}"));
            }
        }
Пример #3
0
        public async Task <Result <SearchCriteriaDb> > UpdateAsync(SearchCriteriaDb criteriaDb)
        {
            try
            {
                context.Entry(criteriaDb).State = EntityState.Modified;
                await context.SaveChangesAsync().ConfigureAwait(false);

                //await DeleteAsync(criteriaDb);
                //await AddAsync(criteriaDb);
                return(Result <SearchCriteriaDb> .Ok(criteriaDb));

                //SearchCriteriaDb criteria = context.SearchCriterias
                //.FirstOrDefault(c => c.Id == criteriaDb.Id);

                //List<DomainDb> domains = context.Domains.ToList();
                //List<CourseCategoryDb> categories = context.CourseCategories.ToList();

                //criteria.CourseCategories = categories.Where(x => criteriaDb.CourseCategories.Contains(x));

                //order.Customer = customer;

                //context.SaveChanges();
            }
            catch (DbUpdateConcurrencyException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"SearchCriteria not update. {e.Message}"));
            }
            catch (DbUpdateException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"SearchCriteria not update. Duplicate field. {e.Message}"));
            }
            catch (DbEntityValidationException e)
            {
                return(Result <SearchCriteriaDb> .Fail <SearchCriteriaDb>($"Invalid SearchCriteria. {e.Message}"));
            }
        }