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)); } }); }
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)); }