public void LoadPersons()
        {
            UiPerson selectedPerson = SelectedPerson;

            AllPersons = (from p in _personDataStore.GetAll()
                          join s in _shooterDataStore.GetAll() on p.PersonId equals s.PersonId into gj
                          orderby p.FirstName
                          orderby p.LastName
                          from subs in gj.DefaultIfEmpty()
                          group gj by p
                          into grouping
                          select new UiPerson
            {
                PersonId = grouping.Key.PersonId,
                FirstName = grouping.Key.FirstName,
                LastName = grouping.Key.LastName,
                DateOfBirth = grouping.Key.DateOfBirth,
                HasShooters = grouping.SelectMany(x => x).Any()
            }).ToList();

            FilterPersons();

            if (selectedPerson != null)
            {
                SelectedPerson = FilteredPersons.FirstOrDefault(x => selectedPerson.PersonId == x.PersonId);
            }
        }
        public void Initialize()
        {
            _personDataStore            = ServiceLocator.Current.GetInstance <IPersonDataStore>();
            _shooterDataStore           = ServiceLocator.Current.GetInstance <IShooterDataStore>();
            _shooterNumberService       = ServiceLocator.Current.GetInstance <IShooterNumberService>();
            _shooterDataWriter          = ServiceLocator.Current.GetInstance <ISsvShooterDataWriterService>();
            _collectionShooterDataStore = ServiceLocator.Current.GetInstance <ICollectionShooterDataStore>();
            _shooterCollectionDataStore = ServiceLocator.Current.GetInstance <IShooterCollectionDataStore>();
            _serviceDeskConfiguration   = ServiceLocator.Current.GetInstance <ServiceDeskConfiguration>();

            MessengerInstance.Register <PersonSelectedMessage>(this,
                                                               x =>
            {
                UpdateCommandCanExecuteOnSelectedPersonChanged();
                LoadShooters(x.PersonId);
            });
            MessengerInstance.Register <SetSelectedPersonMessage>(this,
                                                                  x =>
            {
                SelectedPerson = FilteredPersons.FirstOrDefault(person => person.PersonId == x.PersonId);
            });
            MessengerInstance.Register <SetSelectedShooterMessage>(this,
                                                                   x =>
            {
                SelectedShooter = Shooters.FirstOrDefault(s => s.Shooter.ShooterId == x.ShooterId);
                if (SelectedShooter == null)
                {
                    SelectedShooter = Shooters.FirstOrDefault();
                }
            });

            MessengerInstance.Register <RefreshDataFromRepositoriesMessage>(this,
                                                                            x =>
            {
                UiPerson selectedPerson          = SelectedPerson;
                ShooterViewModel selectedShooter = SelectedShooter;
                LoadPersons();

                if (selectedPerson != null)
                {
                    MessengerInstance.Send(new SetSelectedPersonMessage(selectedPerson.PersonId));
                }

                if (selectedShooter != null)
                {
                    MessengerInstance.Send(new SetSelectedShooterMessage(selectedShooter.Shooter.ShooterId));
                }
            });
        }
Example #3
0
        public ActionResult Ajax([ModelBinder(typeof(DataTablesBinder))] IDataTablesRequest param)
        {
            if (param.Draw == 0)
            {
                return(Json(new
                {
                    draw = param.Draw,
                    error = "ERROR"
                },
                            JsonRequestBehavior.AllowGet));
            }

            int recordsTotal              = reposetory.People.Count();
            int recordsFiltered           = recordsTotal;
            List <PersonAdminList> result = new List <PersonAdminList>();


            if (recordsTotal > 0)
            {
                IOrderedQueryable <Person> FilteredPersons;

                //Filtering
                if (param.Search != null && !string.IsNullOrEmpty(param.Search.Value))
                {
                    FilteredPersons = (IOrderedQueryable <Person>)(from p in reposetory.People.Include(p => p.Memberships.Select(m => m.Association))
                                                                   where p.UserName.Contains(param.Search.Value) | String.Concat(p.FirstName, " ", p.FamilyName).Contains(param.Search.Value) |
                                                                   p.Mobile.Contains(param.Search.Value) | p.Phone.Contains(param.Search.Value) |
                                                                   p.Email.Contains(param.Search.Value)
                                                                   select p);

                    recordsFiltered = (from p in reposetory.People
                                       where p.UserName.Contains(param.Search.Value) | String.Concat(p.FirstName, " ", p.FamilyName).Contains(param.Search.Value) |
                                       p.Mobile.Contains(param.Search.Value) | p.Phone.Contains(param.Search.Value) |
                                       p.Email.Contains(param.Search.Value)
                                       select p).Count();
                }
                else
                {
                    FilteredPersons = (IOrderedQueryable <Person>)reposetory.People;
                }


                //Sorting
                var    sortedColumns = param.Columns.GetSortedColumns();
                var    isSorted      = false;
                string sortdata;
                foreach (var column in sortedColumns)
                {
                    sortdata = column.Data;
                    //Fullname not supportet by Entity ordering
                    if (column.Data == "FullName")
                    {
                        if (!isSorted)
                        {
                            if (column.SortDirection == DataTables.Mvc.Column.OrderDirection.Ascendant)
                            {
                                FilteredPersons = FilteredPersons.OrderBy(p => p.FirstName.Trim()).ThenBy(p => p.FamilyName.Trim());
                            }
                            else
                            {
                                FilteredPersons = FilteredPersons.OrderByDescending(p => p.FirstName.Trim()).ThenByDescending(p => p.FamilyName.Trim());
                            }
                        }
                        else
                        {
                            if (column.SortDirection == DataTables.Mvc.Column.OrderDirection.Ascendant)
                            {
                                FilteredPersons = FilteredPersons.ThenBy(p => p.FirstName).ThenBy(p => p.FamilyName);
                            }
                            else
                            {
                                FilteredPersons = FilteredPersons.ThenByDescending(p => p.FirstName).ThenByDescending(p => p.FamilyName);
                            }
                        }
                        isSorted = true;
                    }

                    else if (!isSorted)
                    {
                        if (column.SortDirection == DataTables.Mvc.Column.OrderDirection.Ascendant)
                        {
                            FilteredPersons = FilteredPersons.OrderBy(column.Data);
                        }
                        else
                        {
                            FilteredPersons = FilteredPersons.OrderByDescending(column.Data);
                        }

                        isSorted = true;
                    }
                    else
                    {
                        if (column.SortDirection == DataTables.Mvc.Column.OrderDirection.Ascendant)
                        {
                            FilteredPersons = FilteredPersons.ThenBy(column.Data);
                        }
                        else
                        {
                            FilteredPersons = FilteredPersons.OrderByDescending(column.Data);
                        }
                    }
                }

                foreach (Person p in FilteredPersons.Skip(param.Start)
                         .Take(param.Length == 0 ? 10 : param.Length).Include("Memberships.Association").Include("Causes.Cause"))
                {
                    result.Add(new PersonAdminList(p));
                }
            }
            return(Json(new
            {
                draw = param.Draw,
                recordsTotal = recordsTotal,
                recordsFiltered = recordsFiltered,
                error = "",
                data = result
            },
                        JsonRequestBehavior.AllowGet));
        }