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")); } }
/// <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); }
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)); }