예제 #1
0
        public ActionResult EditOffer(EditableCarOfferViewModel offer)
        {
            if (this.ModelState.IsValid)
            {
                var carOffer = new CarOffer()
                {
                    Id                  = offer.Id,
                    Author              = offer.Author,
                    Brand               = offer.Brand,
                    Model               = offer.Model,
                    Description         = offer.Description,
                    Image               = offer.Image,
                    Color               = offer.Color,
                    Engine              = offer.Engine,
                    CreatedOn           = DateTime.Now,
                    Transmission        = offer.Transmission,
                    CarCategory         = offer.CarCategory,
                    Mileage             = offer.Mileage,
                    HorsePower          = offer.HorsePower,
                    Location            = offer.Location,
                    Price               = offer.Price,
                    SellersCurrentPhone = offer.SellersCurrentPhone,
                    YearManufacured     = offer.YearManufacured
                };

                this.carOffersService.Update(carOffer);

                return(RedirectToAction("AllOffers", "Offers"));
            }

            return(View());
        }
예제 #2
0
        public void Upload_WhenImageNullIsPassed_ShouldReturnUploadView()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(UploadController).Assembly);

            var carOffer          = new CarOffer();
            var carOfferViewModel = new CarOfferViewModel();
            var fileToPass        = new List <HttpPostedFileBase>();

            fileToPass.Add(null);

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            var imageServiceMock = new Mock <IImageService>();
            var userServiceMock  = new Mock <IUserService>();
            UploadController uploadController = new UploadController(carOffersServiceMock.Object, imageServiceMock.Object, userServiceMock.Object);

            // Act & Assert
            uploadController.WithCallTo(x => x.Upload(carOfferViewModel, fileToPass)).ShouldRenderView("Upload");
        }
예제 #3
0
        private void SeedSampleData(Autos4SaleDbContext dbContext)
        {
            if (!dbContext.CarOffers.Any())
            {
                for (int i = 0; i < 5; i++)
                {
                    var carOffer = new CarOffer()
                    {
                        // TODO: Image property must be set up
                        Brand               = $"RandomBrand-{i}",
                        Model               = $"Proto-Type-{i}",
                        Author              = dbContext.Users.First(x => x.Email == AdministratorUserName),
                        CreatedOn           = DateTime.Now,
                        Color               = (ColorType)i,
                        Engine              = (EngineType)i,
                        Transmission        = TransmissionType.Manual,
                        CarCategory         = (CarCategoryType)i,
                        Mileage             = 20000 + i,
                        HorsePower          = 111 + i,
                        SellersCurrentPhone = "+0899101010",
                        Location            = "Sofia, Mladost 1A",
                        Price               = 1000 + i,
                        Description         = "Perfektna, karana ot 93 godi6na baba, samo do magazina!"
                    };

                    dbContext.CarOffers.Add(carOffer);
                }
            }
        }
예제 #4
0
        public void GetAll_WhenValidParametersArePased_ShouldReturnAllOffers()
        {
            // Arrange
            var carOffer  = new CarOffer();
            var carOffer2 = new CarOffer();

            var efRepoMock = new Mock <IEfRepository <CarOffer> >();

            efRepoMock.Setup(x => x.GetAll)
            .Returns(new List <CarOffer> {
                carOffer, carOffer2
            }.AsQueryable());
            var efUnitOfWorkMock = new Mock <IEfUnitOfWork>();


            var service = new CarOffersService(efRepoMock.Object, efUnitOfWorkMock.Object);

            service.Add(carOffer);
            service.Add(carOffer2);

            // Act
            var result = service.GetAll();

            // Assert
            Assert.AreEqual(2, result.Count());
        }
예제 #5
0
        public void Upload_WhenValidParameterAreProvided_ShouldReturnTheDefaoultContreller()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(UploadController).Assembly);

            var carOffer          = new CarOffer();
            var carOfferViewModel = new CarOfferViewModel();
            var fileToPass        = new List <HttpPostedFileBase>();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            var imageServiceMock = new Mock <IImageService>();
            var userServiceMock  = new Mock <IUserService>();
            UploadController uploadController = new UploadController(carOffersServiceMock.Object, imageServiceMock.Object, userServiceMock.Object);

            // Act & Assert
            uploadController.WithCallTo(x => x.Upload(carOfferViewModel, fileToPass)).ShouldRedirectToRoute(string.Empty);
        }
예제 #6
0
        public void AllCars_WhenValidParametersArePased_ShouldReturnCorerectViewResultName()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);

            var carOffer = new CarOffer();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            var userServiceMock = new Mock <IUserService>();
            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);

            // Act
            ViewResult result = offersController.AllCars() as ViewResult;

            // Assert
            Assert.AreEqual(string.Empty, result.ViewName);
        }
예제 #7
0
        public void DeleteOffer_WhenInValidParametersArePased_ShouldReturnNull()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);

            var carOffer = new CarOffer();
            var guid     = Guid.NewGuid();

            var userServiceMock      = new Mock <IUserService>();
            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            carOffersServiceMock.Setup(x => x.Delete(carOffer));

            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);

            // Act
            ViewResult result = offersController.DeleteOffer(guid) as ViewResult;

            // Assert
            Assert.IsNull(result);
        }
예제 #8
0
        public void DeleteOffer_WhenValidParametersArePased_ShouldCallDeleteMethod()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);

            var carOffer = new CarOffer();
            var guid     = Guid.NewGuid();

            var userServiceMock      = new Mock <IUserService>();
            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            carOffersServiceMock.Setup(x => x.Delete(carOffer));

            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);

            // Act
            carOffersServiceMock.Object.Delete(carOffer);

            // Assert
            carOffersServiceMock.Verify(x => x.Delete(carOffer), Times.Once);
        }
예제 #9
0
        public void DeleteCarOffer(CarOffer carOffer)
        {
            var offerImages = dbContext.OfferImages.Where(x => x.CarOfferId == carOffer.Id).ToList();

            dbContext.OfferImages.RemoveRange(offerImages);

            dbContext.CarOffers.Remove(carOffer);
            dbContext.SaveChanges();
        }
예제 #10
0
        public void CarOfferProp_WhenValidParametersArePasedToId_ShouldSetCorerectly()
        {
            // Arrange
            var image = new Image();
            var offer = new CarOffer();

            // Act
            image.CarOffer = offer;

            // Assert
            Assert.AreEqual(offer, image.CarOffer);
        }
예제 #11
0
        public void CarOffersProp_WhenValidParametersArePasedToId_ShouldSetCorerectly()
        {
            // Arrange
            var user  = new User();
            var offer = new CarOffer();

            // Act
            user.CarOffers = new List <CarOffer>()
            {
                offer
            };

            // Assert
            Assert.AreEqual(offer, user.CarOffers.FirstOrDefault());
        }
예제 #12
0
        public ActionResult Upload(CarOfferViewModel offer, IEnumerable <HttpPostedFileBase> images)
        {
            if (this.ModelState.IsValid)
            {
                if (!images.Contains(null))
                {
                    string[] allowedFileExtensions = new string[] { ".jpg", ".jpeg", ".png", ".bmp" };

                    foreach (var image in images)
                    {
                        if (!allowedFileExtensions.Contains(image.FileName.Substring(image.FileName.LastIndexOf('.'))))
                        {
                            return(View()); // make e default page if something is wrong
                        }
                    }

                    var imgs = this.imageService.SaveImages(images);

                    //var mappedOffer= Mapper.Map<CarOfferViewModel, CarOffer>(offer);

                    var carOffer = new CarOffer()
                    {
                        Author              = userService.ReturnCurrentUser(),
                        Brand               = offer.Brand,
                        Model               = offer.Model,
                        Description         = offer.Description,
                        Image               = imgs,
                        Color               = offer.Color,
                        Engine              = offer.Engine,
                        CreatedOn           = DateTime.Now,
                        Transmission        = offer.Transmission,
                        CarCategory         = offer.CarCategory,
                        Mileage             = offer.Mileage,
                        HorsePower          = offer.HorsePower,
                        Location            = offer.Location,
                        Price               = offer.Price,
                        SellersCurrentPhone = offer.SellersCurrentPhone,
                        YearManufacured     = offer.YearManufacured
                    };

                    this.carOffersService.Add(carOffer);

                    return(RedirectToAction("AllCars", "Offers"));
                }
            }

            return(View()); // make e default page if something is wrong
        }
예제 #13
0
        public void Update_WhenValidParametersArePased_ShouldCallEfRepositoryMethodUpdate()
        {
            // Arrange
            var carOffer = new CarOffer();

            var efRepoMock = new Mock <IEfRepository <CarOffer> >();

            efRepoMock.Setup(x => x.Update(carOffer));
            var efUnitOfWorkMock = new Mock <IEfUnitOfWork>();

            var serviceMock = new CarOffersService(efRepoMock.Object, efUnitOfWorkMock.Object);

            // Act
            serviceMock.Update(carOffer);

            // Assert
            efRepoMock.Verify(x => x.Update(carOffer), Times.Once);
        }
예제 #14
0
        public void Add_WhenValidParametersArePased_ShouldCallAddMethod()
        {
            // Arrange
            var efRepoMock       = new Mock <IEfRepository <CarOffer> >();
            var efUnitOfWorkMock = new Mock <IEfUnitOfWork>();
            var carOffer         = new CarOffer();
            var carOffer2        = new CarOffer();

            var serviceMock = new Mock <ICarOffersService>();

            serviceMock.Setup(x => x.Add(carOffer));

            // Act
            serviceMock.Object.Add(carOffer);

            // Assert
            serviceMock.Verify(x => x.Add(carOffer), Times.Once);
        }
예제 #15
0
        public void Add_WhenValidParametersArePased_ShouldCallUnitOfWorkMethodCommit()
        {
            // Arrange
            var carOffer = new CarOffer();

            var efRepoMock       = new Mock <IEfRepository <CarOffer> >();
            var efUnitOfWorkMock = new Mock <IEfUnitOfWork>();

            efUnitOfWorkMock.Setup(x => x.Commit());

            var service = new CarOffersService(efRepoMock.Object, efUnitOfWorkMock.Object);

            // Act
            service.Add(carOffer);
            service.Add(carOffer);

            // Assert
            efUnitOfWorkMock.Verify(x => x.Commit(), Times.Exactly(2));
        }
예제 #16
0
        public void EditOffer_WhenInValidIdIsPased_ShouldRedirectToHomeViewRoute()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);

            var carOffer             = new CarOffer();
            var userServiceMock      = new Mock <IUserService>();
            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.Update(carOffer)).Verifiable();
            carOffersServiceMock.Object.Update(carOffer);

            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);
            var editableCarOfferViewModel     = new EditableCarOfferViewModel();

            // Act & Assert
            offersController.WithCallTo(x => x.EditOffer(editableCarOfferViewModel)).ShouldRedirectToRoute(string.Empty);
        }
예제 #17
0
        public void YourOffers_WhenInValidGetAllParamIsPased_ShouldReturnNull()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);
            var userServiceMock = new Mock <IUserService>();
            var carOffer        = new CarOffer();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);

            // Act & Assert
            Assert.Throws <NullReferenceException>(() => offersController.YourOffers());
        }
예제 #18
0
        public void Details_WhenInValidIdIsPased_ShouldRedirectToHomeControllerRoute()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);

            var carOffer = new CarOffer();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());
            var guid            = Guid.NewGuid();
            var userServiceMock = new Mock <IUserService>();
            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);

            // Act & Assert
            offersController.WithCallTo(x => x.Details(null)).ShouldRedirectToRoute(string.Empty);
        }
예제 #19
0
        public void About_WhenValidParametersArePased_ShouldReturnCorerectViewAbout()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(HomeController).Assembly);

            var carOffer = new CarOffer();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            var            userServiceMock = new Mock <IUserService>();
            HomeController homeController  = new HomeController(carOffersServiceMock.Object);

            // Act & Assert
            homeController.WithCallTo(x => x.About()).ShouldRenderView("About");
        }
예제 #20
0
        public void GetAllCars_WhenValidParametersArePased_ShouldReturnCorerectPartialViewResult()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);

            var carOffer        = new CarOffer();
            var userServiceMock = new Mock <IUserService>();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);

            //  Act & Assert
            offersController.WithCallTo(x => x.GetAllCars()).ShouldRenderPartialView("_GetAllCarsPartial");
        }
예제 #21
0
        public void EditOffer_WhenValidParametersArePased_ShouldCallUpdateMethod()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(OffersController).Assembly);

            var carOffer = new CarOffer();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.Update(carOffer)).Verifiable();
            carOffersServiceMock.Object.Update(carOffer);

            var userServiceMock = new Mock <IUserService>();
            OffersController offersController = new OffersController(carOffersServiceMock.Object, userServiceMock.Object);
            var editableCarOfferViewModel     = new EditableCarOfferViewModel();
            // Act
            ViewResult result = offersController.EditOffer(editableCarOfferViewModel) as ViewResult;

            // Assert
            carOffersServiceMock.Verify(x => x.Update(carOffer), Times.Once);
        }
예제 #22
0
        public void Upload_WhenInValidParameterImagesIsProvided_ShouldReturnArgumentNullException()
        {
            // Arrange
            var autoMapperConfig = new AutoMapperConfig();

            autoMapperConfig.Execute(typeof(UploadController).Assembly);

            var carOffer          = new CarOffer();
            var carOfferViewModel = new CarOfferViewModel();

            var carOffersServiceMock = new Mock <ICarOffersService>();

            carOffersServiceMock.Setup(x => x.GetAll())
            .Returns(() => new List <CarOffer> {
                carOffer
            }.AsQueryable());

            var imageServiceMock = new Mock <IImageService>();
            var userServiceMock  = new Mock <IUserService>();
            UploadController uploadController = new UploadController(carOffersServiceMock.Object, imageServiceMock.Object, userServiceMock.Object);

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => uploadController.Upload(carOfferViewModel, null));
        }
        public void AddCar(AddCarViewModel addCarViewModel, string userId)
        {
            var offer = new CarOffer()
            {
                Title             = addCarViewModel.Title,
                Make              = addCarViewModel.Make,
                Model             = addCarViewModel.Model,
                Year              = addCarViewModel.Year,
                Price             = addCarViewModel.Price,
                Condition         = addCarViewModel.Condition,
                Color             = addCarViewModel.Color,
                SteeringWheelSide = addCarViewModel.SteeringWheelSide,
                FuelType          = addCarViewModel.FuelType,
                HorsePower        = addCarViewModel.HorsePower,
                EngineSize        = addCarViewModel.EngineSize,
                Gearbox           = addCarViewModel.Gearbox,
                Doors             = addCarViewModel.Doors,
                Kilometers        = addCarViewModel.Kilometers,
                Description       = addCarViewModel.Description,
                ContactNumber     = addCarViewModel.ContactNumber,
                CreatedOn         = DateTime.UtcNow,
            };

            using (var target = new MemoryStream())
            {
                if (addCarViewModel.MainImageFile != null)
                {
                    addCarViewModel.MainImageFile.CopyTo(target);
                    offer.OfferImage = target.ToArray();
                }
            }

            var user = dbContext.AspNetUsers.FirstOrDefault(x => x.Id == userId);

            offer.User   = user;
            offer.UserId = userId;

            dbContext.CarOffers.Add(offer);
            dbContext.SaveChanges();

            var offerType = "CarOffer";

            if (addCarViewModel.SecondImageFile != null)
            {
                using (var target = new MemoryStream())
                {
                    addCarViewModel.SecondImageFile.CopyTo(target);
                    var offerImage = GetOfferImage(target, offer.Id, offerType);
                    dbContext.OfferImages.Add(offerImage);
                }
            }

            if (addCarViewModel.ThirdImageFile != null)
            {
                using (var target = new MemoryStream())
                {
                    addCarViewModel.ThirdImageFile.CopyTo(target);
                    var offerImage = GetOfferImage(target, offer.Id, offerType);
                    dbContext.OfferImages.Add(offerImage);
                }
            }

            if (addCarViewModel.FourthImageFile != null)
            {
                using (var target = new MemoryStream())
                {
                    addCarViewModel.FourthImageFile.CopyTo(target);
                    var offerImage = GetOfferImage(target, offer.Id, offerType);
                    dbContext.OfferImages.Add(offerImage);
                }
            }

            if (addCarViewModel.FifthImageFile != null)
            {
                using (var target = new MemoryStream())
                {
                    addCarViewModel.FifthImageFile.CopyTo(target);
                    var offerImage = GetOfferImage(target, offer.Id, offerType);
                    dbContext.OfferImages.Add(offerImage);
                }
            }

            if (addCarViewModel.SixthImageFile != null)
            {
                using (var target = new MemoryStream())
                {
                    addCarViewModel.SixthImageFile.CopyTo(target);
                    var offerImage = GetOfferImage(target, offer.Id, offerType);
                    dbContext.OfferImages.Add(offerImage);
                }
            }

            dbContext.SaveChanges();
        }
예제 #24
0
        public void Add(CarOffer carOffer)
        {
            this.carOffersRepo.Add(carOffer);

            this.dbContext.Commit();
        }
예제 #25
0
        public void Update(CarOffer carOffer)
        {
            this.carOffersRepo.Update(carOffer);

            this.dbContext.Commit();
        }
예제 #26
0
        public void Delete(CarOffer carOffer)
        {
            this.carOffersRepo.Delete(carOffer);

            this.dbContext.Commit();
        }
예제 #27
0
        public async Task <object> Save(CarOfferViewModel model, string token)
        {
            var offerID   = Guid.NewGuid();
            var allTitles = await _context.CarOffers.Select(x => x.Title).ToListAsync();

            string title;
            string titleTmp = new string(model.ShortDescription.Select(x => char.IsLetterOrDigit(x) ? x : '-').ToArray()).ToLower();
            string check;

            do
            {
                title = titleTmp + ObjectId.GenerateNewId().ToString().Substring(0, 8);
                check = allTitles.FirstOrDefault(x => x.Contains(title));
            } while (check != null);

            List <File> files = new List <File>();

            foreach (var item in model.FileViewModels)
            {
                if (item.Type.Contains("image") && item.Base64.Length > 65)
                {
                    string hash       = (item.Base64.Replace("data:" + item.Type + ";base64,", "").Substring(0, 60) + ObjectId.GenerateNewId().ToString().Substring(0, 8)).Replace("/", "").Replace("-", "") + "." + item.Type.Replace("image/", "");
                    var    byteBuffer = Convert.FromBase64String(item.Base64.Replace("data:" + item.Type + ";base64,", ""));
                    var    webRoot    = _env.WebRootPath;
                    var    filePath   = System.IO.Path.Combine(webRoot, "images");
                    filePath = System.IO.Path.Combine(filePath, hash);
                    System.IO.File.WriteAllBytes(filePath, byteBuffer);
                    files.Add(new File()
                    {
                        Id   = Guid.NewGuid(),
                        Name = item.Name,
                        Hash = hash,
                        Path = "images\\",
                        Type = item.Type.Split('/').FirstOrDefault()
                    });
                }
            }
            List <CarOfferEquipment> equipments = new List <CarOfferEquipment>();
            var equipmentDB = await _context.Equipments.ToListAsync();

            foreach (var item in model.Equipment)
            {
                var eqId = equipmentDB.Where(x => x.IdString == item).Select(x => x.Id).FirstOrDefault();
                if (eqId != null)
                {
                    equipments.Add(new CarOfferEquipment()
                    {
                        CarOfferId  = offerID,
                        EquipmentId = eqId
                    });
                }
            }


            var userNameToken = JwtDecode.User(token);
            var user          = await _context.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == userNameToken.ToUpper());

            CarOffer carOffer = new CarOffer()
            {
                Id               = Guid.NewGuid(),
                CarModel         = await _context.CarModels.Where(x => x.ModelName.ToUpper() == model.CarModel.ToUpper()).FirstOrDefaultAsync(),
                CarProducent     = await _context.CarProducents.Where(x => x.ProducentName.ToUpper() == model.CarProducent.ToUpper()).FirstOrDefaultAsync(),
                Fuel             = await _context.FuelTypes.Where(x => x.FuelName.ToUpper() == model.Fuel.ToUpper()).FirstOrDefaultAsync(),
                Description      = model.Description,
                PhoneNumber      = model.PhoneNumber,
                ShortDescription = model.ShortDescription,
                Equipments       = equipments,
                Title            = title,
                Year             = model.Year,
                Price            = model.Price,
                VinNumber        = model.VinNumber,
                Files            = files,
                Mileage          = model.Mileage,
                AddDate          = DateTime.Now,
                Condition        = model.Condition,
                Country          = model.Country,
                Door             = model.Door,
                Seat             = model.Seat,
                Color            = model.Color,
                HoursePower      = model.HoursePower,
                User             = user
            };
            await _context.CarOffers.AddAsync(carOffer);

            await _context.SaveChangesAsync();

            return(new
            {
                Succeeded = true
            });
        }