예제 #1
0
        public async Task <IHttpActionResult> GetProductByInternalCode(string locale, string internalCode)
        {
            ProductViewModelItem dbProduct = _productRepository
                                             .FindProductByLocaleAnFindProductByLocaleAndInternalCodedInternalCode(locale, internalCode);

            if (dbProduct != null)
            {
                return(this.Ok <ProductViewModelItem>(dbProduct));
            }
            else
            {
                return(this.BadRequest("Record doesnt exist in our system"));
            }
        }
예제 #2
0
        /// <summary>
        /// <see cref="IProductRepository.FindProductByLocaleAnFindProductByLocaleAndInternalCodedInternalCode(string, string)"/>
        ///
        /// Ideas:
        /// <seealso cref="http://stackoverflow.com/questions/5207382/get-data-from-two-tablesjoin-with-linq-and-return-result-into-view"/>
        /// <seealso cref="http://stackoverflow.com/questions/201830/linq-to-sql-firstordefault-not-applicable-to-select-new"/>
        /// </summary>
        /// <param name="locale"></param>
        /// <param name="internalCode"></param>
        /// <returns></returns>
        public ProductViewModelItem FindProductByLocaleAnFindProductByLocaleAndInternalCodedInternalCode(string locale, string internalCode)
        {
            ProductViewModelItem dbProduct = (
                from c in _db.Products
                join l in _db.ProductLocales on c.Id equals l.ProductId
                where l.Locale.Equals(locale) && c.InternalCode == internalCode
                select new ProductViewModelItem
            {
                Id = c.Id,
                ImagePath = c.ImagePath,
                UnitPrice = (c.UnitPrice.HasValue ? c.UnitPrice.Value : 0),
                Name = l.Name
            }
                ).FirstOrDefault();

            return(dbProduct);
        }
예제 #3
0
        public static ProductViewModelItem FromModel(this ProductViewModelItem viewmodel, CateringProduct model)
        {
            viewmodel.ID           = model.ID;
            viewmodel.Name         = model.Name;
            viewmodel.Price        = model.Price;
            viewmodel.SingleChoice = model.SingleChoice;
            viewmodel.Image        = Properties.Settings.Default.imageAbsolutePath + model.Image;

            List <ProductAttributeViewModelItem> atts = new List <ProductAttributeViewModelItem>();

            foreach (var at in model.CateringProductAttributeRelation)
            {
                atts.Add(new ProductAttributeViewModelItem().FromModel(at.CateringProductAttribute));
            }

            viewmodel.ProductAttributes = atts;

            return(viewmodel);
        }
        public IHttpActionResult Get()
        {
            CateringListViewModel         viewmodel     = new CateringListViewModel();
            CateringProductDataController dataCtrl      = new CateringProductDataController();
            SeatDataController            seatDataCtrl  = new SeatDataController();
            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, "Keine passende Veranstaltung gefunden."));
                }
                else if (!e.IsActiveCatering)
                {
                    return(Warning(viewmodel, "Das Catering ist derzeit deaktiviert."));
                }

                foreach (var model in dataCtrl.GetItems().Where(x => x.IsActive))
                {
                    ProductViewModelItem item = new ProductViewModelItem();

                    item.FromModel(model);
                    viewmodel.Data.Add(item);
                }

                int eventID = e.ID;
                foreach (var model in seatDataCtrl.GetCurrentUserSeats(eventID))
                {
                    CateringSeat item = new CateringSeat();

                    item.FromModel(model);
                    viewmodel.Seats.Add(item);
                }
            }
            catch (Exception ex)
            {
                return(Error(viewmodel, ex));
            }

            return(Ok(viewmodel));
        }