Пример #1
0
        public void UnSettleButton_Click(object sender, RoutedEventArgs e)
        {
            if (sender.GetType() != typeof(DataGrid))
            {
                MessageBox.Show("Невозможно определить список");
                return;
            }
            var dg = sender as DataGrid;
            if (dg == null)
            {
                MessageBox.Show("Невозможно определить список");
                return;
            }
            else
            {
                var toUnSettleList = dg.Items.OfType<SettledListModel>();
                int count = 0;

                using (DataBaseConnector dbService = new DataBaseConnector())
                {
                    ObservableCollection<SettledListModel> settledAllListForChecks = new ObservableCollection<SettledListModel>();
                    if (ms != null)
                    {
                        ms.Position = 0;
                        settledAllListForChecks = (ObservableCollection<SettledListModel>)oldSettleAllListKeeper.Deserialize(ms);
                    }
                    bool savef = false;
                    foreach (var row in toUnSettleList)
                    {
                        if (String.IsNullOrEmpty(row.RoomUUID) == false)
                            row.ViewModelStatus = RecordActions.Deleted;

                        //checks
                        if (row.ViewModelStatus == RecordActions.Deleted)
                        {
                            SettledListModel tempSettle = settledAllListForChecks.Where(t => t.UUID == row.UUID).FirstOrDefault();
                            if (tempSettle != null)
                                tempSettle = row;
                            else
                            {
                                MessageBox.Show("Нельзя выселить. Неопредленная запись");
                                MakeDataGridRowFocused(dg, count);
                                return;
                            }
                            if (String.IsNullOrEmpty(row.UUID))
                            {
                                MessageBox.Show("Нельзя выселить. Неопредленная запись");
                                MakeDataGridRowFocused(dg, count);
                                return;
                            }
                            row.RoomNumber = "";
                            row.SettledDate = DateTime.MinValue;
                            row.RoomUUID = "";
                            dbService.HandleSettledListTable(row, t => (t.UUID == row.UUID), RecordActions.Deleted);
                            settledAllListForChecks.Remove(row);
                            savef = true;
                        }
                        count++;
                    }
                    if (savef)
                    {
                        //MessageBox.Show("Saved");
                        int result = dbService.SaveChanges();
                        if (result > 0)
                        {
                            ms.Position = 0;
                            settledAllList = settledAllListForChecks;
                            oldSettleAllListKeeper.Serialize(ms, settledAllList);
                            if (OnSettledListViewModelChanged != null)
                                OnSettledListViewModelChanged(this, new EventArgs());
                        }
                        else
                            MessageBox.Show("Люди не выселены");
                    }
                }
            }
        }
Пример #2
0
        public void SettleButton_Click(object sender, RoutedEventArgs e)
        {
            if (sender.GetType() != typeof(DataGrid))
            {
                MessageBox.Show("Невозможно определить список");
                return;
            }
            var dg = sender as DataGrid;
            if (dg == null)
            {
                MessageBox.Show("Невозможно определить список");
                return;
            }
            else
            {
                var toSettleList = dg.Items.OfType<SettledListModel>();
                int count = 0;

                using (DataBaseConnector dbService = new DataBaseConnector())
                {
                    ObservableCollection<SettledListModel> settledAllListForChecks = new ObservableCollection<SettledListModel>();
                    if (ms!=null)
                    {
                        ms.Position = 0;
                        settledAllListForChecks = (ObservableCollection<SettledListModel>)oldSettleAllListKeeper.Deserialize(ms);
                    }
                    bool savef = false;
                    foreach (var row in toSettleList)
                    {
                        if (String.IsNullOrEmpty(row.RoomNumber))
                        {
                            MessageBox.Show("Укажите комнату");
                            MakeDataGridRowFocused(dg, count);
                            return;
                        }

                        string newRoomUUID = "";
                        try
                        {
                            newRoomUUID = RoomList.Where(t => t.RoomNumber == row.RoomNumber).First().UUID;
                        }
                        catch(NullReferenceException nullEx)
                        {
                            MessageBox.Show("Такого номера команты нет в базе данных");
                            return;
                        }

                        if (String.IsNullOrEmpty(row.RoomUUID)==false && row.RoomUUID != newRoomUUID)
                            row.ViewModelStatus = RecordActions.Updated;
                        else if (String.IsNullOrEmpty(row.RoomUUID))
                            row.ViewModelStatus = RecordActions.Inserted;
                        //checks
                        if (row.ViewModelStatus == RecordActions.Inserted || row.ViewModelStatus == RecordActions.Updated)
                        {
                            SettledListModel tempSettle = settledAllListForChecks.Where(t => t.UUID == row.UUID).FirstOrDefault();
                            if (tempSettle != null)
                                tempSettle = row;
                            else
                                settledAllListForChecks.Add(row);

                            if (settledAllListForChecks.Where(t => t.RoomNumber == row.RoomNumber).Count() > 4)
                            {
                                MessageBox.Show("В комнате " + row.RoomNumber + " теперь больше четырех человек");
                                MakeDataGridRowFocused(dg, count);
                                return;
                            }
                            string roomSex = settledAllListForChecks.Where(t => t.RoomNumber == row.RoomNumber && t.PersonUUID != row.PersonUUID).Select(t => t.Sex).Distinct().ElementAtOrDefault(0);
                            if (String.IsNullOrEmpty(roomSex)==false && roomSex!=row.Sex)
                            {
                                MessageBox.Show("В одной команте не могут быть жители разного пола");
                                MakeDataGridRowFocused(dg, count);
                                return;
                            }
                            if (settledAllListForChecks.Where(t => t.PersonUUID == row.PersonUUID).Count() > 1)
                            {
                                MessageBox.Show("Человек селится больше, чем в одну комнату");
                                MakeDataGridRowFocused(dg, count);
                                return;
                            }
                            row.SettledDate = DateTime.Now;
                            if (String.IsNullOrEmpty(row.UUID))
                                row.UUID = Guid.NewGuid().ToString();
                            row.RoomUUID = newRoomUUID;
                            dbService.HandleSettledListTable(row, t => (t.UUID == row.UUID), row.ViewModelStatus);
                            List<IPersonInfo> persons = dbService.GetPersonRecords(t=>t.UUID==row.PersonUUID);
                            if (persons!=null)
                            {
                                IPersonInfo person = persons[0];
                                person.RoomUUID = row.RoomUUID;
                                dbService.HandlePersonInfoTable(person,t=>t.UUID==person.UUID,RecordActions.Updated);
                            }
                            else
                            {
                                MessageBox.Show("Невозможно найти человека");
                                return;
                            }
                            savef = true;
                        }
                        count++;
                    }
                    if (savef)
                    {
                        //MessageBox.Show("Saved");
                        int result = dbService.SaveChanges();
                        if (result > 0)
                        {
                            ms.Position = 0;
                            settledAllList = settledAllListForChecks;
                            oldSettleAllListKeeper.Serialize(ms, settledAllList);
                            if (OnSettledListViewModelChanged != null)
                                OnSettledListViewModelChanged(this, new EventArgs());
                        }
                        else
                            MessageBox.Show("Люди не заселены");
                    }
                }
            }
        }