public async Task Create(CreateDetailsViewModel details, string userId, string imagePath) { Directory.CreateDirectory($"{imagePath}/photos/"); //var eye = Enum.TryParse(details.EyeColor, out EyesColor eyesColor); //var hair = Enum.TryParse(details.HairColor, out HairColor hairColor); //var wedding = Enum.TryParse(details.WeddingStatus, out WeddingStatus weddingStatus); //var whatYouSerachingFor = Enum.TryParse(details.WhatAreYouSearchingFor, out WhatAreYouSearchingFor whatAreYouSearchingFor); //var cities = Enum.TryParse(details.City, out City city); var userCharacteristic = new UserCharacteristic { FirstName = details.FirstName, LastName = details.LastName, City = details.City, Height = details.Height, Weight = details.Weight, EyeColor = details.EyeColor, HairColor = details.HairColor, Gender = details.Gender, Description = details.Description, WeddingStatus = details.WeddingStatus, WhatAreYouSearchingFor = details.WhatAreYouSearchingFor, CreatedOn = DateTime.UtcNow, Date = details.Date, UserId = userId, }; var extension = Path.GetExtension(details.Image.FileName).TrimStart('.'); if (!this.allowedExtensions.Any(x => extension.EndsWith(x))) { throw new Exception($"Invalid image extension {extension}"); } var photo = new Photo { UserId = userId, Extension = extension, }; var physicalPath = $"{imagePath}/photos/{photo.Id}.{extension}"; using Stream fileStream = new FileStream(physicalPath, FileMode.Create); await details.Image.CopyToAsync(fileStream); userCharacteristic.PhotoId = photo.Id; photo.ImagePath = physicalPath; await this.photosRepository.AddAsync(photo); await this.photosRepository.SaveChangesAsync(); await this.usersRepository.AddAsync(userCharacteristic); await this.usersRepository.SaveChangesAsync(); }
public async Task <IActionResult> Details(CreateDetailsViewModel input) { if (!this.ModelState.IsValid) { return(this.View(input)); } var userId = this.userManager.GetUserId(this.User); try { await this.profilesService.Create(input, userId, $"{this.webHostEnvironment.WebRootPath}/images"); } catch (Exception ex) { this.ModelState.AddModelError(string.Empty, ex.Message); return(this.View(input)); } return(this.Redirect($"/Profiles/Profile?id={userId}")); }