public IHttpActionResult Backend_Detail(Int32 id)
        {
            BackendCateringViewModel    viewmodel     = new BackendCateringViewModel();
            CateringOrderDataController dataCtrl      = new CateringOrderDataController();
            EventDataController         eventDataCtrl = new EventDataController();
            UserDataController          userDataCtrl  = new UserDataController();

            try
            {
                viewmodel.EventOptions = eventDataCtrl.GetItems().ToList().ConvertAll(x =>
                {
                    return(new BackendEventViewModelItem().FromModel(x));
                }).OrderByDescending(x => x.ID).ToList();
                viewmodel.UserOptions = userDataCtrl.GetItems().OrderBy(x => x.FirstName).ToList().ConvertAll(x =>
                {
                    return(new BackendUserViewModelItem().FromModel(x));
                });


                viewmodel.Data.FromModel(dataCtrl.GetItem(id));
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel));
        }
        public IHttpActionResult Backend_Detail_Update(Int32 id, BackendCateringViewModelItem request)
        {
            BackendCateringViewModel    viewmodel = new BackendCateringViewModel();
            CateringOrderDataController dataCtrl  = new CateringOrderDataController();

            try
            {
                dataCtrl.Update(request.ToModel());
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel, "Eintrag wurde gespeichert."));
        }
        public IHttpActionResult Backend_Detail_Insert(BackendNewOrderRequest request)
        {
            BaseViewModel viewmodel = new BaseViewModel();
            CateringOrderDataController dataCtrl = new CateringOrderDataController();

            try
            {
                dataCtrl.Insert(request.ToModel());
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel, "Bestellung wurde aufgenommen."));
        }
        public IHttpActionResult Backend_FilterList(BackendCateringListArgs args)
        {
            BackendCateringListViewModel  viewmodel        = new BackendCateringListViewModel();
            EventDataController           eventDataCtrl    = new EventDataController();
            CateringOrderDataController   orderDataCtrl    = new CateringOrderDataController();
            CateringProductDataController cateringDataCtrl = new CateringProductDataController();
            UserDataController            userDataCtrl     = new UserDataController();

            try
            {
                var events = eventDataCtrl.GetItems().OrderByDescending(x => x.ID).ToList();
                viewmodel.Filter.EventOptions = events.ConvertAll(x =>
                {
                    return(new BackendCateringFilter.CateringFilterEvent()
                    {
                        ID = x.ID,
                        Name = $"{x.EventType.Name} Vol.{x.Volume}"
                    });
                });

                var products = cateringDataCtrl.GetItems().ToList();
                viewmodel.ProductOptions = products.ConvertAll(x =>
                {
                    return(new BackendCateringProductItem().FromModel(x));
                });

                viewmodel.Filter.Name           = args.Filter.Name;
                viewmodel.Filter.SeatNumber     = args.Filter.SeatNumber;
                viewmodel.Filter.EventSelected  = args.Filter.EventSelected;
                viewmodel.Filter.StatusSelected = args.Filter.StatusSelected;
                viewmodel.Pagination            = args.Pagination;

                Int32 TotalItemsCount = 0;
                viewmodel.FromModel(orderDataCtrl.FilterList(args, out TotalItemsCount));
                viewmodel.Pagination.TotalItemsCount = TotalItemsCount;
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel));
        }
        public IHttpActionResult Insert(OrderRequest request)
        {
            OrderRequest viewmodel = request;
            CateringOrderDataController dataCtrl      = new CateringOrderDataController();
            EventDataController         eventDataCtrl = new EventDataController();

            try
            {
                var e = eventDataCtrl.GetItems().FirstOrDefault(x => x.Start <= DateTime.Now && x.End >= DateTime.Now);
                if (e == null)
                {
                    return(Warning(viewmodel, "Die Bestellung konnte keiner Veranstaltung zugeordnet werden."));
                }

                int eventID = e.ID;
                dataCtrl.Insert(request.ToModel(eventID));
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel, "Bestellung ist eingegangen."));
        }