Beispiel #1
0
        public EventBookedProductModel(EventBookedProduct eventBookedProduct)
        {
            IncVat             = true;
            EventBookedProduct = eventBookedProduct;

            _product = eventBookedProduct.Product;

            EventCharge = new EventChargeModel(EventBookedProduct.EventCharge);
        }
Beispiel #2
0
        private async void OKCommandExecuted()
        {
            IsBusy = true;

            var fromEvent = SelectedEvent;

            await LoadLightEventDetails(fromEvent);

            // Event Caterings
            if (fromEvent.EventCaterings.Any())
            {
                fromEvent.EventCaterings.ForEach(x =>
                {
                    var catering = new EventCatering()
                    {
                        ID                      = Guid.NewGuid(),
                        EventID                 = _event.Event.ID,
                        Event                   = _event.Event,
                        Time                    = x.EventCatering.Time,
                        RoomID                  = x.EventCatering.RoomID,
                        StartTime               = x.EventCatering.StartTime,
                        EndTime                 = x.EventCatering.EndTime,
                        Notes                   = x.EventCatering.Notes,
                        ShowInInvoice           = x.EventCatering.ShowInInvoice,
                        IncludeInForwardBook    = x.EventCatering.IncludeInForwardBook,
                        IncludeInCorrespondence = x.EventCatering.IncludeInCorrespondence,
                        IsSpecial               = x.EventCatering.IsSpecial
                    };

                    var products = fromEvent.EventBookedProducts.Where(y => y.EventBookedProduct.EventBookingItemID == x.EventCatering.ID).ToList();

                    if (products.Any())
                    {
                        products.ForEach(y =>
                        {
                            var product = new EventBookedProduct()
                            {
                                ID                 = Guid.NewGuid(),
                                EventID            = _event.Event.ID,
                                ProductID          = y.EventBookedProduct.ProductID,
                                Product            = y.EventBookedProduct.Product,
                                EventBookingItemID = catering.ID,
                                Quantity           = _event.Event.Places,
                                Price              = y.EventBookedProduct.Price
                            };

                            var charge = new EventCharge()
                            {
                                ID            = product.ID,
                                EventID       = _event.Event.ID,
                                ProductID     = product.ProductID,
                                Quantity      = product.Quantity,
                                Price         = product.Price,
                                Product       = product.Product,
                                ShowInInvoice = catering.ShowInInvoice
                            };

                            product.EventCharge = charge;


                            _eventsDataUnit.EventBookedProductsRepository.Add(product);
                            _eventsDataUnit.EventChargesRepository.Add(charge);
                            _event.EventBookedProducts.Add(new EventBookedProductModel(product));
                            _event.EventCharges.Add(new EventChargeModel(charge));
                        });
                    }
                    _eventsDataUnit.EventCateringsRepository.Add(catering);
                    _event.EventCaterings.Add(new EventCateringModel(catering));
                });
            }

            // Event Rooms
            if (fromEvent.EventRooms.Any())
            {
                fromEvent.EventRooms.ForEach(x =>
                {
                    var room = new EventRoom()
                    {
                        ID                      = Guid.NewGuid(),
                        EventID                 = _event.Event.ID,
                        Event                   = _event.Event,
                        RoomID                  = x.EventRoom.RoomID,
                        StartTime               = x.EventRoom.StartTime,
                        EndTime                 = x.EventRoom.EndTime,
                        Notes                   = x.EventRoom.Notes,
                        ShowInInvoice           = x.EventRoom.ShowInInvoice,
                        IncludeInForwardBook    = x.EventRoom.IncludeInForwardBook,
                        IncludeInCorrespondence = x.EventRoom.IncludeInCorrespondence,
                    };

                    var products = fromEvent.EventBookedProducts.Where(y => y.EventBookedProduct.EventBookingItemID == x.EventRoom.ID).ToList();

                    if (products.Any())
                    {
                        products.ForEach(y =>
                        {
                            var product = new EventBookedProduct()
                            {
                                ID                 = Guid.NewGuid(),
                                EventID            = _event.Event.ID,
                                ProductID          = y.EventBookedProduct.ProductID,
                                Product            = y.EventBookedProduct.Product,
                                EventBookingItemID = room.ID,
                                Quantity           = _event.Event.Places,
                                Price              = y.EventBookedProduct.Price
                            };

                            var charge = new EventCharge()
                            {
                                ID            = product.ID,
                                EventID       = _event.Event.ID,
                                ProductID     = product.ProductID,
                                Quantity      = product.Quantity,
                                Price         = product.Price,
                                Product       = product.Product,
                                ShowInInvoice = room.ShowInInvoice
                            };
                            product.EventCharge = charge;

                            _eventsDataUnit.EventBookedProductsRepository.Add(product);
                            _eventsDataUnit.EventChargesRepository.Add(charge);
                            _event.EventBookedProducts.Add(new EventBookedProductModel(product));
                            _event.EventCharges.Add(new EventChargeModel(charge));
                        });
                    }
                    _eventsDataUnit.EventRoomsRepository.Add(room);
                    _event.EventRooms.Add(new EventRoomModel(room));
                });
            }

            // Event Golfs
            var fromEventGolfs = fromEvent.EventGolfs.Where(eventGolf => !eventGolf.EventGolf.IsLinked);

            if (fromEventGolfs.Any())
            {
                fromEvent.EventGolfs.ForEach(x =>
                {
                    var golf = new EventGolf()
                    {
                        ID                      = Guid.NewGuid(),
                        EventID                 = _event.Event.ID,
                        Event                   = _event.Event,
                        Time                    = x.EventGolf.Time,
                        TeeID                   = x.EventGolf.TeeID,
                        HoleID                  = x.EventGolf.HoleID,
                        Slots                   = x.EventGolf.Slots,
                        Notes                   = x.EventGolf.Notes,
                        ShowInInvoice           = x.EventGolf.ShowInInvoice,
                        IncludeInForwardBook    = x.EventGolf.IncludeInForwardBook,
                        IncludeInCorrespondence = x.EventGolf.IncludeInCorrespondence,
                        EventGolf1              = x.EventGolf.EventGolf1 != null ? new EventGolf()
                        {
                            ID                      = Guid.NewGuid(),
                            EventID                 = _event.Event.ID,
                            Event                   = _event.Event,
                            Time                    = x.EventGolf.EventGolf1.Time,
                            TeeID                   = x.EventGolf.EventGolf1.TeeID,
                            HoleID                  = x.EventGolf.EventGolf1.HoleID,
                            Slots                   = x.EventGolf.EventGolf1.Slots,
                            Notes                   = x.EventGolf.EventGolf1.Notes,
                            ShowInInvoice           = x.EventGolf.EventGolf1.ShowInInvoice,
                            IncludeInForwardBook    = x.EventGolf.EventGolf1.IncludeInForwardBook,
                            IncludeInCorrespondence = x.EventGolf.EventGolf1.IncludeInCorrespondence,
                            IsLinked                = true
                        } : null
                    };

                    var products = fromEvent.EventBookedProducts.Where(y => y.EventBookedProduct.EventBookingItemID == x.EventGolf.ID).ToList();

                    if (products.Any())
                    {
                        products.ForEach(y =>
                        {
                            var product = new EventBookedProduct()
                            {
                                ID                 = Guid.NewGuid(),
                                EventID            = _event.Event.ID,
                                ProductID          = y.EventBookedProduct.ProductID,
                                Product            = y.EventBookedProduct.Product,
                                EventBookingItemID = golf.ID,
                                Quantity           = _event.Event.Places,
                                Price              = y.EventBookedProduct.Price
                            };

                            var charge = new EventCharge()
                            {
                                ID            = product.ID,
                                EventID       = _event.Event.ID,
                                ProductID     = product.ProductID,
                                Product       = product.Product,
                                Quantity      = product.Quantity,
                                Price         = product.Price,
                                ShowInInvoice = golf.ShowInInvoice
                            };
                            product.EventCharge = charge;
                            _eventsDataUnit.EventBookedProductsRepository.Add(product);
                            _eventsDataUnit.EventChargesRepository.Add(charge);
                            _event.EventBookedProducts.Add(new EventBookedProductModel(product));
                            _event.EventCharges.Add(new EventChargeModel(charge));
                        });
                    }
                    _eventsDataUnit.EventGolfsRepository.Add(golf);
                    _event.EventGolfs.Add(new EventGolfModel(golf));
                });
            }

            // Event Invoices
            if (fromEvent.EventInvoices.Any())
            {
                fromEvent.EventInvoices.ForEach(x =>
                {
                    var invoice = new EventInvoice()
                    {
                        ID                      = Guid.NewGuid(),
                        EventID                 = _event.Event.ID,
                        Event                   = _event.Event,
                        Notes                   = x.EventInvoice.Notes,
                        ShowInInvoice           = x.EventInvoice.ShowInInvoice,
                        IncludeInForwardBook    = x.EventInvoice.IncludeInForwardBook,
                        IncludeInCorrespondence = x.EventInvoice.IncludeInCorrespondence,
                    };

                    var products = fromEvent.EventBookedProducts.Where(y => y.EventBookedProduct.EventBookingItemID == x.EventInvoice.ID).ToList();

                    if (products.Any())
                    {
                        products.ForEach(y =>
                        {
                            var product = new EventBookedProduct()
                            {
                                ID                 = Guid.NewGuid(),
                                EventID            = _event.Event.ID,
                                ProductID          = y.EventBookedProduct.ProductID,
                                Product            = y.EventBookedProduct.Product,
                                EventBookingItemID = invoice.ID,
                                Quantity           = _event.Event.Places,
                                Price              = y.EventBookedProduct.Price
                            };

                            var charge = new EventCharge()
                            {
                                ID            = product.ID,
                                EventID       = _event.Event.ID,
                                ProductID     = product.ProductID,
                                Product       = product.Product,
                                Quantity      = product.Quantity,
                                Price         = product.Price,
                                ShowInInvoice = invoice.ShowInInvoice
                            };
                            product.EventCharge = charge;
                            _eventsDataUnit.EventBookedProductsRepository.Add(product);
                            _eventsDataUnit.EventChargesRepository.Add(charge);
                            _event.EventBookedProducts.Add(new EventBookedProductModel(product));
                            _event.EventCharges.Add(new EventChargeModel(charge));
                        });
                    }
                    _eventsDataUnit.EventInvoicesRepository.Add(invoice);
                    _event.EventInvoices.Add(new EventInvoiceModel(invoice));
                });
            }
            RaisePropertyChanged("CloseDialog");
            IsBusy = false;
        }