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); } }
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(); }