Exemplo n.º 1
0
        public Task <CreateAssetResponse> Handle(CreateAssetRequest request, CancellationToken cancellationToken)
        {
            var newAsset = new Entities.Asset(request.CreateAsset)
            {
                DrawingNo      = request.CreateAsset.DrawingNo,
                SerialNumber   = request.CreateAsset.SerialNumber,
                OperationHours = request.CreateAsset.OperationHours
            };

            if (request.CreateAsset.Features.Any())
            {
                var features = request.CreateAsset.Features.ToList();
                for (var i = 0; i < features.Count; i++)
                {
                    var newFeature = new AssetFeature(i, features[i]);
                    newAsset.AddFeature(newFeature);
                }
            }

            if (!string.IsNullOrEmpty(request.CreateAsset.InventoryNo))
            {
                var newInventory = new Inventory(request.CreateAsset.InventoryNo);
                newAsset.AddInventory(newInventory);
            }

            if (request.CreateAsset.AssetLocation != null)
            {
                var location    = request.CreateAsset.AssetLocation;
                var newLocation = new AssetLocation(newAsset.Id, location.LocatingTime, new Point(location.Longitude, location.Latitude), location.ClientOSInfo, location.ClientBrowserInfo, location.IsCreatedManually);
                newAsset.AddLocation(newLocation);
            }

            return(HandleIntern(newAsset, cancellationToken));
        }
Exemplo n.º 2
0
        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));
        }