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