private void SaveEditUserData(int usrId) { //db.Dates.Attach(date); using (StudentuConteiner db = new StudentuConteiner()) { try { //initial data validation string error; error = UsverDataValidation(); if (error != null) { dialogService.ShowMessage(error); return; } // here we check contacts in the database. If there are such, then pull up // the desired person instead of creating a new one with single contacts Persone tmpPerson = CheckExistPerson(_Contacts.Contacts, usrId); if (tmpPerson == null) { dialogService.ShowMessage("Проблемы со связью с базой данных\n на стадии проверки существования контактов " + "\n при редактирования данных пользователя"); return; } if (tmpPerson.PersoneId != 0) { Persone prs = CompareContacts(tmpPerson.PersoneId); if (prs == null) { dialogService.ShowMessage("Редактирование данных пользователя прервано"); return; } prs.PersoneId = Usver.Persone.PersoneId; Usver.Persone = prs; } else { Usver.Persone.Contacts = _Contacts.Contacts; } Dates dt = Usver.Persone.Dates.Where(e => e.Persone.PersoneId == Usver.Persone.PersoneId).FirstOrDefault(); dt = Usver.Date; //Usver.User.Pass = SHA.ComputeSHA256Hash(Usver.User.Pass); Usver.User.Persone = Usver.Persone; Usver.User.Persone.PersoneDescription = Usver.PersoneDescription; db.Entry(Usver.User).State = EntityState.Modified; db.Entry(Usver.User.Persone).State = EntityState.Modified; db.Entry(Usver.User.Persone.Contacts).State = EntityState.Modified; db.Entry(Usver.User.Persone.PersoneDescription).State = EntityState.Modified; db.Entry(dt).State = EntityState.Modified; db.SaveChanges(); dialogService.ShowMessage("Данные сохранены."); } catch (ArgumentNullException ex) { dialogService.ShowMessage(ex.Message); } catch (OverflowException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.SqlClient.SqlException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityCommandExecutionException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityException ex) { dialogService.ShowMessage(ex.Message); } } }
private void SaveAuthorData() { using (StudentuConteiner db = new StudentuConteiner()) { try { string errValidation = ValidAuthorDataCheck(); if (errValidation != null) { errValidation += "\n\n Данные автора НЕ были сохранены"; dialogService.ShowMessage(errValidation); return; } else { //if we need to modified entrie if (PersoneContactsData.Author.AuthorId != 0) { db.Entry(PersoneContactsData.Persone).State = EntityState.Modified; db.Entry(PersoneContactsData.Date).State = EntityState.Modified; db.Entry(PersoneContactsData.Author).State = EntityState.Modified; db.Entry(_Dir.Dir).State = EntityState.Modified; db.Entry(_Subj.Subj).State = EntityState.Modified; db.Entry(PersoneContactsData.PersoneDescription).State = EntityState.Modified; } PersoneContactsData.Persone.Contacts = _Contacts.Contacts; if (PersoneContactsData.Author.AuthorId != 0) { PersoneContactsData.Persone.Dates[0] = PersoneContactsData.Date; } else { PersoneContactsData.Persone.Dates.Add(PersoneContactsData.Date); } PersoneContactsData.Persone.PersoneDescription = PersoneContactsData.PersoneDescription; PersoneContactsData.Author.Persone = PersoneContactsData.Persone; PersoneContactsData.Author.AuthorStatus = db.AuthorStatuses.Find(_AuthorStatus.AuthorStatus.AuthorStatusId); if (PersoneContactsData.Author.AuthorId == 0) { db.Authors.Add(PersoneContactsData.Author); } db.SaveChanges(); //удаляем из списка направлений упоминания об авторе, если в списке направлений автора нет более того или иного направления после правки // remove the author’s mention from the list of directions if the author’s list does not have more than one direction or another after editing var res = db.Directions.ToList(); foreach (var i in res) { if (i.Author.Contains(PersoneContactsData.Author) && !_Dir.AuthorDirections.Contains(i)) { i.Author.Remove(PersoneContactsData.Author); } continue; } foreach (Direction item in _Dir.AuthorDirections) { var res1 = db.Directions.Find(item.DirectionId); if (res1 != null && !res1.Author.Contains(PersoneContactsData.Author)) { //changing DB if (PersoneContactsData.Author.AuthorId != 0) { res1.Author.Add(PersoneContactsData.Author); continue; } else { res1.Author.Add(PersoneContactsData.Author); } continue; } } db.SaveChanges(); //удаляем из списка предметов упоминания об авторе, если в списке предметов автора нет более того или иного направления после правки // remove the author’s mention from the list of subjects if the author’s list does not have more than one subject or another after editing var res2 = db.Subjects.ToList(); foreach (var i in res2) { if (i.Authors.Contains(PersoneContactsData.Author) && !_Subj.AuthorSubjects.Contains(i)) { i.Authors.Remove(PersoneContactsData.Author); } continue; } //here we add author in subjects foreach (Subject item in _Subj.AuthorSubjects) { var res1 = db.Subjects.Find(item.SubjectId); if (res1 != null) { //changing DB res1.Authors.Add(PersoneContactsData.Author); continue; } else { res1.Authors.Add(PersoneContactsData.Author); } continue; } db.SaveChanges(); dialogService.ShowMessage("Данные автора сохранены"); //обнуляем поля окна //clear window fields if (PersoneContactsData.Author.AuthorId == 0) { _Contacts = new _Contacts(); PersoneContactsData.Persone = new Persone(); _AuthorStatus = new _AuthorStatus(); PersoneContactsData.Author = new Author(); PersoneContactsData.Date = new Dates(); _Subj = new _Subject(); _Dir = new _Direction(); PersoneContactsData.PersoneDescription = new PersoneDescription(); } } } catch (ArgumentNullException ex) { dialogService.ShowMessage(ex.Message); } catch (OverflowException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.SqlClient.SqlException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityCommandExecutionException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityException ex) { dialogService.ShowMessage(ex.Message); } } }
private void SaveUserData() { using (StudentuConteiner db = new StudentuConteiner()) { try { //initial data validation string error; error = UsverDataValidation(); if (error != null) { dialogService.ShowMessage(error); return; } // тут мы проверяем контакты по БД.Если есть такие, то подтянуть //нужную person вместо того, чтоб создавать новую с одинковыми контактами Persone tmpPerson = CheckExistPerson(_Contacts.Contacts, 0); if (tmpPerson == null) { dialogService.ShowMessage("Проблемы со связью с базой данных\n на стадии проверки существования контактов " + "\n при добавлении нового пользователя"); return; } if (tmpPerson.PersoneId != 0) { Persone persone = new Persone(); Contacts OldContacts = new Contacts(); //тут мы находим Person , которая уже имеется в БД с такими же контактами для дальнейшей работы с ней //в текущем контексте Usver.Persone = db.Persones.Where(e => e.PersoneId == tmpPerson.PersoneId).FirstOrDefault(); OldContacts = db.Contacts.Where(c => c.ContactsId == Usver.Persone.Contacts.ContactsId).FirstOrDefault(); OldContacts = db.Contacts.Where(c => c.ContactsId == Usver.Persone.Contacts.ContactsId).FirstOrDefault(); //тут мы подготавливаем данные для вызова окна сравнения текущих данных личности пользователя //и предыдущих его данных _Contacts.OldPersoneCompare = (Persone)persone.CloneExceptVirtual(); _Contacts.CurPersoneCompare = (Persone)this.Usver.Persone.CloneExceptVirtual(); _Contacts.TmpContacts = (Contacts)OldContacts.CloneExceptVirtual(); _Contacts.OldTmpContactsCompare = (Contacts)OldContacts.CloneExceptVirtual(); _Contacts.TmpContactsCompare = (Contacts)this._Contacts.Contacts.CloneExceptVirtual(); //вызывем окно сравнения CompareContatctsWindow compareContatctsWindow = new CompareContatctsWindow(this); showWindow.ShowDialog(compareContatctsWindow); //если в результате сравнения не был принят ни один из вариантов if (!_Contacts.saveCompareResults) { //тут лучше придумать диалоговое окно с радиокнопками , для выбора вариантов действия // - отменить прием заказа и отправить пользователя закрыть окно приема заказа //т.к. не понятно как реализовать закрытие окна из вьюмодел не вмешиваяся в сраный мввм //но в идеале закрыть окно приема заказа. Думаю, что это потянет за собой перепил по всему проекту //процедуры закрытия окна. // - if (dialogService.YesNoDialog("Не сохранен ни один из вариантов...\n" + "Отменить процедуру оформления нового пользователя?")) { dialogService.ShowMessage("Ок. Тогда просто закройте окно оформления нового пользователя"); _Contacts.Contacts = OldContacts; cancelSaveUserData = true; return; } else { dialogService.ShowMessage("В базе данных не могут дублироваться контакты\n" + "Задайте другие контактные данные пользователя в окне приема заказа."); _Contacts.Contacts = OldContacts; cancelSaveUserData = true; return; }; } bool personeCompare = persone.ComparePersons(persone, _Contacts.Persone); bool contactsCompare = _Contacts.CompareContacts(persone.Contacts, _Contacts.Contacts); if (!personeCompare) { db.Entry(Usver.Persone).State = EntityState.Modified; Usver.Persone.CopyExeptVirtualIdPhoto(Usver.Persone, _Contacts.Persone); } if (!contactsCompare) { db.Entry(OldContacts).State = EntityState.Modified; _Contacts.Contacts.CopyExceptVirtualAndId(OldContacts, _Contacts.Contacts); Usver.Persone.Contacts = _Contacts.Contacts; } //db.SaveChanges(); } else { Usver.Persone.Contacts = _Contacts.Contacts; } // Usver.User.Pass = SHA.ComputeSHA256Hash(Usver.User.Pass); Usver.Persone.Dates.Add(Usver.Date); Usver.User.Persone = Usver.Persone; Usver.User.Persone.PersoneDescription = Usver.PersoneDescription; db.Users.Add(Usver.User); db.SaveChanges(); newUserSave = true; if (!anyUsersInDB) { dialogService.ShowMessage("Данные сохранены. Теперь нужно авторизироваться..."); } else { dialogService.ShowMessage("Данные сохранены."); } } catch (ArgumentNullException ex) { dialogService.ShowMessage(ex.Message); } catch (OverflowException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.SqlClient.SqlException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityCommandExecutionException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityException ex) { dialogService.ShowMessage(ex.Message); } } }
private void AddFakeOrders() { //GetFakeOrder _Test test = new _Test(); using (StudentuConteiner db = new StudentuConteiner()) { try { //над присоеденить к контексту int orderNumer = 26500; DateTime date = new DateTime(2014, 2, 01); OrderLine Order = new OrderLine(); for (int i = orderNumer; i < orderNumer + 30000; i++) { Order.OrderNumber = i; Order.Direction = db.Directions.Find(test.rnd.Next(1, 12)); Order.WorkType = db.WorkTypes.Find(test.rnd.Next(1, 13)); Order.Subject = db.Subjects.Find(test.rnd.Next(1, 9)); Order.Source = db.Sources.Find(test.rnd.Next(1, 6)); Order.Status = db.Statuses.Find(test.rnd.Next(1, 10)); Order.WorkInCredit = test.RandomBool(); Order.Dates = new Dates() { DateOfReception = date, DeadLine = date.AddDays(test.rnd.Next(1, 30)) }; Order.Money = new Money() { Price = test.rnd.Next(500, 1001), Prepayment = 500 }; Order.SaveToBase = test.RandomBool(); Order.Saved = true; Order.WorkDescription = test.RandWorkDescription(); //Order.Author = Persone Persone = new Persone(); Persone.PriceRating = test.rnd.Next(0, 10); Persone.Male = test.RandomBool(); Persone.Female = !Persone.Male; Persone.Name = test.RandName(Persone.Male); Persone.Surname = test.RandSurName(Persone.Male); Persone.Patronimic = test.RandPatronimic(Persone.Male); Persone.Contacts = new Contacts() { Phone1 = test.RandPhone(), Phone2 = test.RandPhone() }; Persone.PersoneDescription = new PersoneDescription() { Description = test.RandDescription() }; Order.Client = new Client() { Persone = Persone, Course = test.rnd.Next(1, 4) }; Order.Client.Universities.Add(db.Universities.Find(test.rnd.Next(1, 7))); Order.User = db.Users.Find(test.rnd.Next(0, 2)); //нижние две строки кода - признак того, что что-то пошло не тиак, но вроде работает.... db.Configuration.AutoDetectChangesEnabled = false; db.Configuration.ValidateOnSaveEnabled = false; db.Orderlines.Add(Order); db.SaveChanges(); db.Entry(Order).State = EntityState.Modified; Order.ParentId = Order.OrderLineId; db.SaveChanges(); db.Entry(Order).State = EntityState.Detached; if (i % test.rnd.Next(1, 11) == 0) { date = date.AddDays(1); if (date.Year == DateTime.Now.Year && date.Month == DateTime.Now.Month && date.Day > DateTime.Now.Day) { break; } } } } catch (ArgumentNullException ex) { dialogService.ShowMessage(ex.Message); } catch (OverflowException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.SqlClient.SqlException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityCommandExecutionException ex) { dialogService.ShowMessage(ex.Message); } catch (System.Data.Entity.Core.EntityException ex) { dialogService.ShowMessage(ex.Message); } } }