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;
        }
Exemplo n.º 3
0
        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);
            }
        }