private void Update(GratsDBContext db)
        {
            var oldCategoryContacts =
                (from categoryContact in db.CategoryContacts.Include(cc => cc.Contact)
                 where categoryContact.CategoryID == Category.ID
                 select categoryContact).ToList();
            var removed = oldCategoryContacts
                          .Where(oldCC => !Category.CategoryContacts.Any(newCC => newCC.Contact.VKID == oldCC.Contact.VKID));

            db.CategoryContacts.RemoveRange(removed);

            var result = Category;

            if (IsBirthday && Category is GeneralCategory)
            {
                result = new BirthdayCategory(Category);
                db.GeneralCategories.Remove(Category as GeneralCategory);
                db.BirthdayCategories.Add(result as BirthdayCategory);
            }
            else if (IsGeneral && Category is BirthdayCategory)
            {
                result = new GeneralCategory(Category, Date.Value.DateTime);
                db.BirthdayCategories.Remove(Category as BirthdayCategory);
                db.GeneralCategories.Add(result as GeneralCategory);
            }
            else if (IsGeneral)
            {
                (Category as GeneralCategory).Date = Date.Value.DateTime;
            }
            db.SaveChanges();
            (result as ITaskGenerator).Regenerate(db);
        }
 /// <summary>
 /// Создает объект MessageDispatcher
 /// </summary>
 /// <param name="db">Контекст, используемый для работы с БД</param>
 /// <param name="vk">Объект, используемый для связи с ВК</param>
 public MessageDispatcher(GratsDBContext db, MessageDispatcherVkConnector vk = null)
 {
     if (db == null)
     {
         throw new ArgumentNullException(nameof(db));
     }
     if (vk == null)
     {
         vk = new MessageDispatcherVkConnector();
     }
     DB = db;
     VK = vk;
 }
 private void Create(GratsDBContext db)
 {
     if (IsBirthday)
     {
         var result = new BirthdayCategory(Category);
         db.BirthdayCategories.Add(result);
         db.SaveChanges();
         result.Generate(db);
     }
     else
     {
         var result = new GeneralCategory(Category, Date.Value.DateTime);
         db.GeneralCategories.Add(result);
         db.SaveChanges();
         result.Generate(db);
     }
 }
Exemple #4
0
        public MessageDispatcherTests()
        {
            db         = (App.Current as App).dbContext;
            dispatcher = new MessageDispatcher(db, vk);

            goodCategoryA = new GeneralCategory {
                Name = "A", Template = "A", OwnersVKID = UserId
            };
            goodCategoryB = new GeneralCategory {
                Name = "B", Template = "B", OwnersVKID = UserId
            };
            badCategory = new GeneralCategory {
                Name = "bad", Template = "^", OwnersVKID = UserId
            };
            otherCategory = new GeneralCategory {
                Name = "bad", Template = "^", OwnersVKID = UserId + 1
            };

            contact1 = new Grats.Model.Contact {
                VKID = 1, ScreenName = "UserX"
            };
            contact2 = new Grats.Model.Contact {
                VKID = 2, ScreenName = "UserY"
            };

            db.Add(goodCategoryA);
            db.Add(goodCategoryB);
            db.Add(badCategory);

            db.Add(contact1);
            db.Add(contact2);

            db.SaveChanges();

            user1 = new User {
                Id = 1, ScreenName = "User1"
            };
            user2 = new User {
                Id = 2, ScreenName = "User2"
            };

            vk.Users.Add(user1);
            vk.Users.Add(user2);
        }
        public void Save(GratsDBContext db)
        {
            foreach (var categoryContact in Category.CategoryContacts)
            {
                var vkID            = categoryContact.Contact.VKID;
                var existingContact = db.Contacts
                                      .FirstOrDefault(c => c.VKID == vkID);
                if (existingContact != null)
                {
                    categoryContact.Contact = existingContact;
                }
            }

            if (Category.ID == 0)
            {
                Create(db);
            }
            else
            {
                Update(db);
            }
        }
 public void Delete(GratsDBContext db)
 {
     db.Categories.Remove(Category);
     db.SaveChanges();
 }