public Trip(TripDTO.Detail dto) { TripId = dto.TripId; Name = dto.Name; Color = dto.Color; Start = dto.Start; End = dto.End; Travelers = dto.Travelers.Select(t => new Person(t)).ToList(); Invited = dto.Invited.Select(t => new Person(t)).ToList(); Route = new Route(dto.Route); Items = dto.Items.Select(i => new Item(i)).ToList(); Categories = dto.Categories.Select(c => new Category(c)).ToList(); }
public async void GetTripAsync(int tripId) { try { _toDoCurrent = 0; _toDoTotal = 0; _toPackCurrent = 0; _toPackTotal = 0; var email = (string)ApplicationData.Current.LocalSettings.Values["current_user_email"]; TripDTO.Detail trip = await TripController.GetTripAsync(tripId); Trip = new Trip(trip); this.Categories = Trip.Categories.Select(c => c.Name).ToList(); this.Travelers = Trip.Travelers; ToDoList.Clear(); ToPackList.Clear(); var toDoList = Trip.Items.Where(i => i.ItemType == ItemType.ToDo).ToList(); toDoList.ForEach(i => { var person = i.Persons.FirstOrDefault(p => p.PersonEmail.ToLower() == email.ToLower()); if (person != null) { var amount = i.Persons.Where(p => p.IsDone != true).ToList().Count(); var forOnePersonOverview = new ItemDTO.ForOnePersonOverview(i.ItemId, i.Name, i.ItemType, i.Category.Name, amount, person); forOnePersonOverview.PropertyChanged += async(sender, e) => await UpdateItemAsync((ItemDTO.ForOnePersonOverview)sender); ToDoList.Add(forOnePersonOverview); } _toDoTotal += i.Persons.Count(); _toDoCurrent += i.Persons.Where(p => p.IsDone == true).ToList().Count(); }); decimal toDoPercent = ((decimal)_toDoCurrent / (decimal)_toDoTotal) * 100; ToDoProgress = Convert.ToInt32(toDoPercent); ToDoProgressFormat = $"{ToDoProgress}%"; var toPackList = Trip.Items.Where(i => i.ItemType == ItemType.ToPack).ToList(); toPackList.ForEach(i => { var person = i.Persons.FirstOrDefault(p => p.PersonEmail.ToLower() == email.ToLower()); if (person != null) { var amount = i.Persons.Where(p => p.IsDone != true).ToList().Count(); var forOnePersonOverview = new ItemDTO.ForOnePersonOverview(i.ItemId, i.Name, i.ItemType, i.Category.Name, amount, person); forOnePersonOverview.PropertyChanged += async(sender, e) => await UpdateItemAsync((ItemDTO.ForOnePersonOverview)sender); ToPackList.Add(forOnePersonOverview); } _toPackTotal += i.Persons.Count(); _toPackCurrent += i.Persons.Where(p => p.IsDone == true).ToList().Count(); }); decimal toPackPercent = ((decimal)_toPackCurrent / (decimal)_toPackTotal) * 100; ToPackProgress = Convert.ToInt32(toPackPercent); ToPackProgressFormat = $"{ToPackProgress}%"; GotDataNotSuccesfull = false; BuildShareString(); } catch { GotDataNotSuccesfull = true; } IsBusy = false; LoadingDone = true; }