Example #1
0
        public PersonViewModel(PersonView view,
                               IDataAccessService das,
                               SettingsViewModel settings,
                               Permissions appUserPermissions,
                               List <Person> persons)
            : base()
        {
            this.view               = view;
            this.das                = das;
            this.settings           = settings;
            this.appUserPermissions = appUserPermissions;

            this.persons           = persons;
            this.title             = "Сотрудник";
            this.personPhotos      = new Dictionary <int, BitmapImage>();
            this.personPhotoKey    = -1;
            this.personPhotoSetter = new NotifyTaskCompletion <Person>(getNullPersonPhoto());
            if (this.persons.Count() != -1)
            {
                this.Person = this.persons[(this.persons.Count() - 1)];
            }
        }
Example #2
0
        private async void executeShowPersonViewCommand(object obj)
        {
            if (this.selectedPerson != null)
            {
                this.isPersonViewShowed = true;
                bool showPersonHistory = false;
                if (this.appUserPermissions["SeePersonHistory"])
                {
                    showPersonHistory = true;
                }
                bool useOperDB = this.settings.UseOperDB;

                PersonView    view             = null;
                List <Person> personList       = null;
                List <Person> personListOperDB = null;
                List <Person> personListDwDB   = null;

                CancellationTokenSource CTS   = new CancellationTokenSource();
                CancellationToken       token = CTS.Token;

                try
                {
                    personListDwDB = await das.GetPersonAsync(token,
                                                              this.selectedPerson.PersonKey,
                                                              this.selectedPerson.Id,
                                                              this.selectedPerson.Guid,
                                                              new DateTime(9999, 1, 1),
                                                              showPersonHistory,
                                                              use_oper_db : false);

                    if (useOperDB)
                    {
                        personListOperDB = await das.GetPersonAsync(token,
                                                                    this.selectedPerson.PersonKey,
                                                                    this.selectedPerson.Id,
                                                                    this.selectedPerson.Guid,
                                                                    new DateTime(9999, 1, 1),
                                                                    show_person_history : false,
                                                                    use_oper_db : true);
                    }
                }
                catch (Exception ex)
                {
                    CTS.Cancel();
                    if (view != null)
                    {
                        view.Close();
                    }
                    Message.ShowError(ex.Message, ex.GetType().ToString(), this.view);
                }

                if (personListDwDB != null)
                {
                    personListDwDB = personListDwDB.OrderBy(p => p.ValidFrom).ToList();
                    personList     = personListDwDB;
                }

                if (personListOperDB != null)
                {
                    if (personList != null)
                    {
                        personList.AddRange(personListOperDB);
                    }
                    else
                    {
                        personList = personListOperDB;
                    }
                }

                if (personList != null)
                {
                    if (this.appUserPermissions["SeeLevels"])
                    {
                        try
                        {
                            foreach (Person person in personList)
                            {
                                if (this.settings.UseOperDB == true && person.PersonKey == 0)
                                {
                                    useOperDB = true;
                                }
                                else
                                {
                                    useOperDB = false;
                                }
                                MainQueryParams levelsParams = new MainQueryParams();
                                levelsParams.UseOperDB           = useOperDB;
                                levelsParams.ShowFullAccessLevel = this.settings.ShowFullAccessLevel;
                                levelsParams.Levels    = person.LevelId;
                                levelsParams.StartDate = person.ValidFrom;

                                //person.Levels = await das.GetLevelsAsync(CancellationToken.None, useOperDB, null, this.settings.ShowFullAccessLevel, person.LevelId, person.ValidFrom);
                                person.Levels = await das.GetLevelsAsync(CancellationToken.None, levelsParams);

                                if (person.Levels != null)
                                {
                                    person.Levels.Sort((x, y) => x.Num.CompareTo(y.Num));
                                }

                                levelsParams.Levels             = person.DepartmentLevelId;
                                levelsParams.IsDepartmentLevels = true;
                                //person.DepartmentLevels = await das.GetLevelsAsync(CancellationToken.None, useOperDB, null, this.settings.ShowFullAccessLevel, person.DepartmentLevelId, person.ValidFrom,true);
                                person.DepartmentLevels = await das.GetLevelsAsync(CancellationToken.None, levelsParams);

                                if (person.DepartmentLevels != null)
                                {
                                    person.DepartmentLevels.Sort((x, y) => x.Num.CompareTo(y.Num));
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            Message.ShowError(ex.Message, ex.GetType().ToString(), this.view);
                        }
                    }

                    view           = new PersonView();
                    view.ViewModel = new PersonViewModel(view, this.das, this.settings, this.appUserPermissions, personList);
                    if (showPersonHistory)
                    {
                        view.ViewModel.IsPersonHistoryAvailable = true;
                    }
                    view.ViewModel.IsExtendedMode = true;
                    view.Owner = this.view;
                    view.WindowStartupLocation = WindowStartupLocation.CenterOwner;
                    //view.ShowInTaskbar = false;
                    view.Show();
                }
                this.isPersonViewShowed = false;
            }
        }