protected override void HyperLink() { _layoutViewModel.DataSource = new ObservableCollection <LayoutModel>(CurrentItem.Layouts); _layoutViewModel.CurrentItem = CurrentItem.Layouts.FirstOrDefault(); if (CurrentItem.Id == 0) { var venueDto = new VenueDto { Description = CurrentItem.Description, Address = CurrentItem.Address, Phone = CurrentItem.Phone, }; venueDto = _venueService.CreateVenue(venueDto); CurrentItem.Id = venueDto.Id; } _layoutViewModel.ParentVenueId = CurrentItem.Id; var layoutView = new LayoutView { DataContext = _layoutViewModel }; var result = layoutView.ShowDialog(); if (result == true) { CurrentItem.Layouts = _layoutViewModel.Layouts; CurrentItem.HasChanged = true; } }
protected override async Task SaveChanges() { // added item var venueModelForAdd = _dataSource.Where(x => x.Status == ModelInfo.NewItem).ToArray(); foreach (var item in venueModelForAdd) { var venueDto = new VenueDto { Description = item.Description, Address = item.Address, Phone = item.Phone, }; _venueService.CreateVenue(venueDto); } // updated item var venueModelForUpdate = _dataSource.Where(x => x.Status == ModelInfo.Changed).ToArray(); foreach (var item in venueModelForUpdate) { var venueDto = new VenueDto { Id = item.Id, Description = item.Description, Address = item.Address, Phone = item.Phone, }; _venueService.EditVenue(venueDto); } // deleted items var venueModelsForDelete = _dataSource.Where(x => x.Status == ModelInfo.Deleted).ToArray(); foreach (var item in venueModelsForDelete) { var layouts = _venueService.GetVenueLayouts(item.Id).Layouts; foreach (var layout in layouts) { var areas = _layoutService.GetLayoutAreas(layout.Id).Areas; foreach (var area in areas) { var seats = _areaService.GetAreaSeats(area.Id).Seats; foreach (var seatModel in seats) { _seatService.DeleteSeat(seatModel.Id); } _areaService.DeleteArea(area.Id); } _layoutService.DeleteLayout(layout.Id); } _venueService.DeleteVenue(item.Id); } }