public AccessoryList GetAllAccessories() { var accessoriesList = new AccessoryList() { StagesBikeNumberPlates = Mapper.MapLists(_stagesBikeNumberPlateRepository.GetAll()), Aerobars = Mapper.MapLists(_aerobarRepository.GetAll()), HandlebarPosts = Mapper.MapLists(_handlebarPostRepository.GetAll()), MediaShelves = Mapper.MapLists(_mediaShelfRepository.GetAll()), PhoneHolders = Mapper.MapLists(_phoneHolderRepository.GetAll()), SeatPosts = Mapper.MapLists(_seatPostRepository.GetAll()), StagesDumbbellHolders = Mapper.MapLists(_stagesDumbbellHolderRepository.GetAll()), TabletHolders = Mapper.MapLists(_tabletHolderRepository.GetAll()) }; return(accessoriesList); }
public async Task <IActionResult> Create( [Bind("assetID,addDate,description,duration,Address,name,ownerID,ownerName,price,priceDaily,priceWeekly,priceMonthly,request,accessory,AssetCategories")] Asset asset) { var user = await _userManager.GetUserAsync(HttpContext.User); if (user == null) { return(Redirect("/Account/Login")); } if (ModelState.IsValid) { var userId = user?.Id; var userName = user?.UserName; DateTime today = DateTime.Now; asset.addDate = today; asset.ownerID = userId; asset.ownerName = userName; asset.request = false; // Assign make to asset var myMakeId = HttpContext.Request.Form["Makes"]; var myMakeIdNumVal = int.Parse(myMakeId); asset.MakeId = myMakeIdNumVal; // Assign a city to the asset var myCityId = HttpContext.Request.Form["Cities"]; var myCityIdNumVal = int.Parse(myCityId); asset.CityId = myCityIdNumVal; /* === Add Images === */ // Get images from form var uploadedFiles = HttpContext.Request.Form.Files; // Get the wwwroot folder var webRootPath = _env.WebRootPath; // Set assets image folder var uploadsPath = Path.Combine(webRootPath, "images\\uploads\\assets"); // Create Image Gallery to hold images only when there is // at least one image uploaded ImageGallery ImageGallery; int ImageGalleryId = -1; if (uploadedFiles.Count > 0) { ImageGallery = new ImageGallery(); ImageGallery.Title = "My cool gallery"; // Add Image gallery to DB _context.Add(ImageGallery); await _context.SaveChangesAsync(); //Get Id of recently added Image Gallery ImageGalleryId = ImageGallery.ImageGalleryId; foreach (var uploadedFile in uploadedFiles) { if (uploadedFile != null && uploadedFile.Length > 0) { var file = uploadedFile; if (file.Length > 0) { // 1) Add image to DB Image Image = new Image(); Image.ImageGalleryId = ImageGalleryId; Image.FileLink = Path.Combine("images/uploads/assets/", file.FileName); _context.Add(Image); await _context.SaveChangesAsync(); // 2) Get Id or Guid of recently added image from DB //int ImageId = Image.ImageId; Guid ImageGuid = Image.ImageGuid; // Better // 3) Save image to disk with Guid var fileName = ContentDispositionHeaderValue .Parse(file.ContentDisposition).FileName.Trim('"'); // 3.1) Get File extension from file string fileExtesion = Path.GetExtension(fileName); // 3.2) Change file name to Guid fileName = ImageGuid + fileExtesion; Console.WriteLine(fileName); // 3.3) Save image to disk with new file name using (var fileStream = new FileStream(Path.Combine(uploadsPath, fileName), FileMode.Create)) { await file.CopyToAsync(fileStream); } // 4) Update FileLink in DB Image.FileLink = Path.Combine("images/uploads/assets/", fileName); await _context.SaveChangesAsync(); } } } } // Attach Gallery to Asset if a new gallery is created if (ImageGalleryId != -1) { asset.ImageGalleryId = ImageGalleryId; } // Save asset to DB _context.Add(asset); await _context.SaveChangesAsync(); // Get the category from select form var myCategoryId = HttpContext.Request.Form["AssetCategories"]; var myCategoryIdNumVal = int.Parse(myCategoryId); // Assign a category to the asset AssetCategory AssetCategory = new AssetCategory(); AssetCategory.AssetId = asset.assetID; AssetCategory.CategoryId = myCategoryIdNumVal; // Save asset category to DB _context.AssetCategory.Add(AssetCategory); // Get the subcategory from select form var mySubCategoryId = HttpContext.Request.Form["AssetSubCategories"]; if (!(String.IsNullOrEmpty(mySubCategoryId))) { var mySubCategoryIdNumVal = int.Parse(mySubCategoryId); // Assign a subcategory to the asset AssetCategory AssetSubCategory = new AssetCategory(); AssetSubCategory.AssetId = asset.assetID; AssetSubCategory.CategoryId = mySubCategoryIdNumVal; // Save asset subcategory to DB _context.AssetCategory.Add(AssetSubCategory); } // Save categories to DB await _context.SaveChangesAsync(); /* Add features to asset */ var accessoryItemIds = HttpContext.Request.Form["FeatureItemId"]; if ((!(String.IsNullOrEmpty(accessoryItemIds))) || accessoryItemIds.Count() != 0) { foreach (var id in accessoryItemIds) { var idNumVal = int.Parse(id); var itemKey = "FeatureItem" + id; var accessoryItem = HttpContext.Request.Form[itemKey]; if (!(String.IsNullOrEmpty(accessoryItem))) { // Create AssetFeature AssetFeature AssetFeature = new AssetFeature(); AssetFeature.AssetId = asset.assetID; AssetFeature.FeatureId = idNumVal; AssetFeature.FeatureValue = accessoryItem; // Save asset subcategory to DB _context.AssetFeature.Add(AssetFeature); await _context.SaveChangesAsync(); } } } /* Add accessories to asset */ // Get accessories from form var accessoryNames = HttpContext.Request.Form["accessoryName"]; var accessoryPrices = HttpContext.Request.Form["accessoryPrice"]; // Create accessory list only when there is at least one accessory AccessoryList AccessoryList; int AccessoryListId = -1; int accessoriesLength = 0; if ((!(String.IsNullOrEmpty(accessoryNames))) && (!(String.IsNullOrEmpty(accessoryPrices))) && accessoryNames.Count() == accessoryPrices.Count()) { accessoriesLength = accessoryNames.Count(); AccessoryList = new AccessoryList(); // Add accessory list to DB _context.Add(AccessoryList); await _context.SaveChangesAsync(); //Get Id of recently added accessory list AccessoryListId = AccessoryList.AccessoryListId; for (int i = 0; i < accessoriesLength; ++i) { Accessory Accessory = new Accessory(); Accessory.AccessoryListId = AccessoryListId; Accessory.Title = accessoryNames[i]; var priceNumVal = decimal.Parse(accessoryPrices[i]); Accessory.Price = priceNumVal; // Save accessory to DB _context.Add(Accessory); await _context.SaveChangesAsync(); } } // Attach accessory list id to Asset if a new accessory list is created if (AccessoryListId != -1) { asset.AccessoryListId = AccessoryListId; } // Save asset to DB await _context.SaveChangesAsync(); return(RedirectToAction("Index")); } SetCategoryViewBag(asset.AssetCategories); SetMakeViewBag(); SetCityViewBag(); SetFeatureViewBag(asset.AssetFeatures); return(View(asset)); }