public override async Task Initialize() { AddVenueCommand = new RelayCommandAsync(OnAddVenue); EditVenueCommand = new RelayCommandAsync(OnEditVenue); DeleteVenueCommand = new RelayCommandAsync(OnDeleteVenue); _mediator.Subscribe(VenueSavedOperationKey, VenueSaved); var venues = await _venueService.ToListAsync(); VenueList = new ObservableCollection <Models.Venue>(venues.Select(x => VenueParser.ToVenue(x)).ToList()); }
private async Task OnEditVenue(object obj) { if (!(obj is Models.Venue venue)) { return; } var edit = await _venueService.GetFullModelAsync(venue.Id); venue.LayoutList = VenueParser.ToVenue(edit).LayoutList; _markedVenue = venue; await OpenVenueWindow(venue, string.Format(l10n.VenueView.View.EditTitle, edit.Name)); _markedVenue = null; }
private async Task OnSave(object obj) { if (Venue is null) { return; } Errors = Venue.Validate().ToList(); if (Errors.Any()) { return; } var addOrUpdate = VenueParser.ToVenueContract(Venue); try { if (addOrUpdate.Id <= 0) { Venue.Id = await _venueService.CreateAsync(addOrUpdate); } else { await _venueService.UpdateAsync(addOrUpdate); Venue.Id = addOrUpdate.Id; } //update ids of areas, which were update (for large count of seats, venue service deletes areas and inserts it in order to increase performance) var venue = _venueService.GetFullModel(Venue.Id); Venue = VenueParser.ToVenue(venue); _mediator.Raise(VenueManagementViewModel.VenueSavedOperationKey, Venue); } catch (FaultException <ServiceValidationFaultDetails> exception) { switch (exception.Message) { case "Such venue already exists": DisplayError(l10n.VenueView.Errors.VenueNameIsExists); break; case "Incorrect state of the venue. The venue must have at least one layout": DisplayError(l10n.VenueView.Errors.VenueHasNoLayouts); break; case "Area description isn't unique": DisplayError(l10n.VenueView.Errors.AreaDescriptionUnique); break; case "Incorrect state of area. An area must have atleast one seat": DisplayError(l10n.VenueView.Errors.AreaHasNoSeats); break; case "Layout description isn't unique": DisplayError(l10n.VenueView.Errors.LayoutDescriptionUnique); break; case "Incorrect state of the layout. The layout must have at least one area": DisplayError(l10n.VenueView.Errors.LayoutDescriptionUnique); break; } } catch (FaultException) { DisplayError(l10n.Shared.Errors.InternalAppError); } }