示例#1
0
        public async Task CreateAsync(CreateVendorInputModel input, string userId, string imagePath)
        {
            var vendor = new Vendor
            {
                Name        = input.Name,
                Description = input.Description,
                Email       = input.Email,
                PhoneNumber = input.PhoneNumber,
                Address     = input.PhoneNumber,
                WebPage     = input.WebPage,
                UserId      = userId,
            };

            foreach (var inputService in input.ReturnedServices)
            {
                var service = this.serviceRepository.All().FirstOrDefault(x => x.Id == inputService);

                if (service == null)
                {
                    service = new Service
                    {
                        Name = service.Name,
                    };
                }

                vendor.VendorServices.Add(new VendorService
                {
                    Service = service,
                    Vendor  = vendor,
                });
            }

            Directory.CreateDirectory($"{imagePath}/vendors/");
            foreach (var image in input.Images)
            {
                var extension = Path.GetExtension(image.FileName).TrimStart('.');
                if (!this.allowedExtensions.Any(x => extension.EndsWith(x)))
                {
                    throw new Exception($"Invalid image extension {extension}");
                }

                var dbImage = new Image()
                {
                    Extension = extension,
                    UserId    = userId,
                };

                // var remoteUrl = await this.cloudinaryService
                //    .UploadAsync(image, dbImage.Id);
                // dbImage.RemoteImageUrl = remoteUrl;
                vendor.Images.Add(dbImage);
                var physicalPath = $"{imagePath}/vendors/{dbImage.Id}.{extension}";
                using Stream fileStream = new FileStream(physicalPath, FileMode.Create);
                await image.CopyToAsync(fileStream);
            }

            await this.vendorRepository.AddAsync(vendor);

            await this.vendorRepository.SaveChangesAsync();
        }
        public IActionResult Create()
        {
            var viewModel = new CreateVendorInputModel
            {
                Services = this.servicesService.GetAllAsKeyValuePairs(),
            };

            return(this.View(viewModel));
        }
        public async Task <IActionResult> Create(CreateVendorInputModel input)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(input));
            }

            var user = await this.userManager.GetUserAsync(this.User);

            try
            {
                await this.vendorService.CreateAsync(input, user.Id, $"{this.environment.WebRootPath}/images");
            }
            catch (Exception ex)
            {
                this.ModelState.AddModelError(string.Empty, ex.Message);
                return(this.View(input));
            }

            return(this.Redirect("/Vendor/All"));
        }