예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        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);
                }
            }
        }
예제 #4
0
        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);
                }
            }
        }