public CategoriesDonationsRelation Delete(CategoriesDonationsRelation donation)
        {
            var entity = _dbContext.CategoryDonationRelations.SingleOrDefault(x => x.ID == donation.ID);

            if (entity != null)
            {
                _dbContext.CategoryDonationRelations.Remove(entity);
                _dbContext.SaveChanges();
            }

            return(entity);
        }
        public CategoriesDonationsRelation Update(CategoriesDonationsRelation relation)
        {
            var entity = _dbContext.CategoryDonationRelations
                         .SingleOrDefault(x => x.ID == relation.ID);

            if (entity != null)
            {
                entity.Category   = relation.Category;
                entity.CategoryID = relation.CategoryID;
                entity.Donation   = relation.Donation;
                entity.DonationID = relation.DonationID;
                _dbContext.CategoryDonationRelations.Update(entity);
                _dbContext.SaveChanges();
            }

            return(entity);
        }
        public CategoriesDonationsRelation Add(int donationId, int categoryId)
        {
            var donation = _dbContext.Donations.Single(x => x.ID == donationId);
            var category = _dbContext.Categories.Single(x => x.ID == categoryId);

            var relation = new CategoriesDonationsRelation
            {
                ID         = 0,
                Category   = category,
                CategoryID = categoryId,
                Donation   = donation,
                DonationID = donationId
            };

            _dbContext.CategoryDonationRelations.Add(relation);
            _dbContext.SaveChanges();
            return(relation);
        }
Example #4
0
        private CategoriesDonationsRelation CreateRelation(Donation donation, Category category)
        {
            var relation = _dbContext.CategoryDonationRelations
                           .SingleOrDefault(x => x.CategoryID == category.ID && x.DonationID == donation.ID);

            if (relation is null)
            {
                relation = new CategoriesDonationsRelation
                {
                    ID         = 0,
                    Category   = category,
                    CategoryID = category.ID,
                    Donation   = donation,
                    DonationID = donation.ID
                };

                _dbContext.CategoryDonationRelations.Add(relation);
                _dbContext.SaveChanges();
            }

            return(relation);
        }
Example #5
0
        public Donation Add(Donation donation, IEnumerable <Category> categories)
        {
            using var transaction = _dbContext.Database.BeginTransaction();

            try
            {
                _dbContext.Donations.Add(donation);
                _dbContext.SaveChanges();
            }
            catch (Exception)
            {
                transaction.Rollback();
                throw;
            }

            if (donation.DonationCategories is null)
            {
                donation.DonationCategories = new List <CategoriesDonationsRelation>();
            }

            foreach (var item in categories)
            {
                Category category = null;

                try
                {
                    category = CreateCategory(category);
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }

                if (category.DonationCategories is null)
                {
                    category.DonationCategories = new List <CategoriesDonationsRelation>();
                }

                CategoriesDonationsRelation relation = null;

                try
                {
                    relation = CreateRelation(donation, category);
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }

                try
                {
                    AddRelationToDonationAndCategory(donation, category, relation);
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }

            transaction.Commit();

            return(donation);
        }
Example #6
0
 private void AddRelationToDonationAndCategory(Donation donation, Category category, CategoriesDonationsRelation relation)
 {
     if (donation.DonationCategories.SingleOrDefault(x => x.ID == relation.ID) is null)
     {
         donation.DonationCategories.Add(relation);
     }
     if (category.DonationCategories.SingleOrDefault(x => x.ID == relation.ID) is null)
     {
         category.DonationCategories.Add(relation);
     }
     _dbContext.SaveChanges();
 }
 public CategoriesDonationsRelation Add(CategoriesDonationsRelation relation)
 {
     _dbContext.CategoryDonationRelations.Add(relation);
     _dbContext.SaveChanges();
     return(relation);
 }