public async Task <ActionResult> SubmitMarketItem(CreateMarketItemModel model) { if (!ModelState.IsValid) { model.Currencies = await CurrencyReader.GetCurrencies(); model.Categories = await MarketplaceReader.GetMarketCategories(); return(View("CreateMarketItem", model)); } var mainImage = await model.MainImage.SaveMarketItemImageToDiskAsync(true); var altimage1 = await model.AltImage1.SaveMarketItemImageToDiskAsync(false); var altimage2 = await model.AltImage2.SaveMarketItemImageToDiskAsync(false); var altimage3 = await model.AltImage3.SaveMarketItemImageToDiskAsync(false); var altimage4 = await model.AltImage4.SaveMarketItemImageToDiskAsync(false); var marketItem = new CreateMarketModel { Type = model.Type, CategoryId = model.GetCategoryId(), Title = model.Title, CurrencyId = model.CurrencyId, MainImage = mainImage, AlternateImages = new List <string> { altimage1, altimage2, altimage3, altimage4 }, AskingPrice = model.Price, ReservePrice = model.ReservePrice, Description = model.Description, LocationRegion = model.LocationRegion, AllowPickup = model.AllowPickup, PickupOnly = model.PickupOnly, LocationId = model.GetLocationId(), ShippingBuyerArrange = model.ShippingBuyerArrange, ShippingNational = model.ShippingNational, ShippingInternational = model.ShippingInternational, ShippingNationalPrice = model.ShippingNationalPrice, ShippingNationalDetails = model.ShippingNationalDetails, ShippingInternationalPrice = model.ShippingInternationalPrice, ShippingInternationalDetails = model.ShippingInternationalDetails, CloseDate = DateTime.UtcNow.AddDays(model.Type == MarketItemType.Auction ? Math.Max(3, model.AuctionDuration) : 14) }; var result = await MarketplaceWriter.CreateMarketItem(User.Identity.GetUserId(), marketItem); if (!result.Success) { return(ViewMessage(new ViewMessageModel(ViewMessageType.Danger, Resources.Market.itemActionErrorMessageTitle, Resources.Market.createItemErrorMessage))); } return(RedirectToAction("MarketItem", new { marketItemId = result.Result })); }
public async Task <IWriterResult <int> > CreateMarketItem(string userId, CreateMarketModel model) { try { var currentUser = new Guid(userId); using (var context = ExchangeDataContextFactory.CreateContext()) { var user = await context.Users.FirstOrDefaultNoLockAsync(x => x.Id == currentUser); if (user == null) { return(new WriterResult <int>(false, "Unauthorized")); } var newItem = new Entity.MarketItem { CategoryId = model.CategoryId, UserId = user.Id, Title = model.Title, Description = model.Description, CurrencyId = model.CurrencyId, AskingPrice = model.AskingPrice, ReservePrice = model.ReservePrice, CloseDate = model.CloseDate, Created = DateTime.UtcNow, LocationId = model.LocationId, MainImage = model.MainImage, Type = model.Type, Feature = MarketItemFeature.Normal, //request.Feature; Status = MarketItemStatus.Active, LocationRegion = model.LocationRegion ?? string.Empty, AllowPickup = model.AllowPickup, PickupOnly = model.PickupOnly, ShippingBuyerArrange = model.ShippingBuyerArrange, ShippingNational = model.ShippingNational, ShippingInternational = model.ShippingInternational, ShippingNationalPrice = model.ShippingNationalPrice, ShippingNationalDetails = model.ShippingNationalDetails, ShippingInternationalPrice = model.ShippingInternationalPrice, ShippingInternationalDetails = model.ShippingInternationalDetails, Images = new List <Entity.MarketItemImage>() }; if (model.AlternateImages.Any()) { foreach (var image in model.AlternateImages.Where(x => !string.IsNullOrEmpty(x))) { newItem.Images.Add(new Entity.MarketItemImage { Image = image }); } } context.MarketItem.Add(newItem); await context.SaveChangesAsync().ConfigureAwait(false); return(new WriterResult <int>(true, newItem.Id)); } } catch (Exception) { throw; } }