public async Task Post([FromBody] CarOfferViewModel _model) { string token = Request.Headers["Authorization"]; await _carOfferService.Save(_model, token); this.HttpContext.Response.StatusCode = 201; }
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); }
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"); }
public void ModifiedOnProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testModifiedOn = DateTime.Now; // Act caroOfferViewModel.ModifiedOn = testModifiedOn; // Assert Assert.AreEqual(testModifiedOn, caroOfferViewModel.ModifiedOn); }
public void ColorProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testColor = ColorType.Blue; // Act caroOfferViewModel.Color = testColor; // Assert Assert.AreEqual(testColor, caroOfferViewModel.Color); }
public void SellersCurrentPhoneProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testSellersCurrentPhone = "359899104343"; // Act caroOfferViewModel.SellersCurrentPhone = testSellersCurrentPhone; // Assert Assert.AreEqual(testSellersCurrentPhone, caroOfferViewModel.SellersCurrentPhone); }
public void IdProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testGuidId = Guid.NewGuid(); // Act caroOfferViewModel.Id = testGuidId; // Assert Assert.AreEqual(testGuidId, caroOfferViewModel.Id); }
public void HorsePowerProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testHorsePower = 101; // Act caroOfferViewModel.HorsePower = testHorsePower; // Assert Assert.AreEqual(testHorsePower, caroOfferViewModel.HorsePower); }
public void CarCategoryProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testCarCategory = CarCategoryType.Estate; // Act caroOfferViewModel.CarCategory = testCarCategory; // Assert Assert.AreEqual(testCarCategory, caroOfferViewModel.CarCategory); }
public void EngineProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testEngine = EngineType.Diesel; // Act caroOfferViewModel.Engine = testEngine; // Assert Assert.AreEqual(testEngine, caroOfferViewModel.Engine); }
public void PriceProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testPrice = 2500; // Act caroOfferViewModel.Price = testPrice; // Assert Assert.AreEqual(testPrice, caroOfferViewModel.Price); }
public void LocationProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testLocation = "Sofia"; // Act caroOfferViewModel.Location = testLocation; // Assert Assert.AreEqual(testLocation, caroOfferViewModel.Location); }
public void TransmissionProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testTransmission = TransmissionType.Manual; // Act caroOfferViewModel.Transmission = testTransmission; // Assert Assert.AreEqual(testTransmission, caroOfferViewModel.Transmission); }
public void UserProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testUser = new User(); // Act caroOfferViewModel.Author = testUser; // Assert Assert.AreEqual(testUser, caroOfferViewModel.Author); }
public void YearManufacuredProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testYearManufacured = 2001; // Act caroOfferViewModel.YearManufacured = testYearManufacured; // Assert Assert.AreEqual(testYearManufacured, caroOfferViewModel.YearManufacured); }
public void ModelProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testModel = "Passat"; // Act caroOfferViewModel.Model = testModel; // Assert Assert.AreEqual(testModel, caroOfferViewModel.Model); }
public void BrandProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testBrand = "VW"; // Act caroOfferViewModel.Brand = testBrand; // Assert Assert.AreEqual(testBrand, caroOfferViewModel.Brand); }
public async Task <List <CarOfferViewModel> > Get() { var models = await _context.CarOffers .Where(x => x.Deleted == false) .Include(x => x.Equipments) .ThenInclude(x => x.Equipment) .Include(x => x.CarModel) .Include(x => x.CarProducent) .Include(x => x.Fuel) .Include(x => x.Files) .Include(x => x.User) .ToListAsync(); if (models == null) { return(null); } List <CarOfferViewModel> carOfferList = new List <CarOfferViewModel>(); foreach (var model in models) { List <string> equipment = null; equipment = model.Equipments.Select(x => x.Equipment.Name).ToList(); CarOfferViewModel carOffer = new CarOfferViewModel { CarModel = model.CarModel.ModelName, CarProducent = model.CarProducent.ProducentName, Fuel = model.Fuel.FuelName, Description = model.Description, ShortDescription = model.ShortDescription, Title = model.Title, PhoneNumber = model.PhoneNumber, Equipment = equipment, Year = model.Year, Price = model.Price, VinNumber = model.VinNumber, Mileage = model.Mileage, Condition = model.Condition, Country = model.Country, Seat = model.Seat, Door = model.Door, Color = model.Color, HoursePower = model.HoursePower, BusinessProfile = model.User.BusinessProfile.ToString() }; carOfferList.Add(carOffer); } return(carOfferList); }
public void ImageProp_WhenValidParametersArePasedToId_ShouldSetCorerectly() { // Arrange var caroOfferViewModel = new CarOfferViewModel(); var testImage = new Image(); // Act caroOfferViewModel.Image = new List <Image>() { testImage }; // Assert Assert.AreEqual(testImage, caroOfferViewModel.Image.FirstOrDefault()); }
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 }
public async Task Put(string id, [FromBody] CarOfferViewModel model) { string token = Request.Headers["Authorization"]; try { await _carOfferService.Update(model, token); this.HttpContext.Response.StatusCode = 204; return; } catch (Exception ex) { this.HttpContext.Response.StatusCode = 404; throw ex; } }
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 async Task <object> Put(int id, [FromBody] CarOfferViewModel _model) { string token = Request.Headers["Authorization"]; return(await _carOfferService.Update(_model, token)); }
public async Task <object> GetRaw(string title) { try { var model = await _context.CarOffers.Where(x => x.Title.ToLower() == title.ToLower()) .Where(x => x.Deleted == false) .Include(x => x.Equipments) .ThenInclude(x => x.Equipment) .Include(x => x.CarModel) .Include(x => x.CarProducent) .Include(x => x.Fuel) .Include(x => x.Files) .Include(x => x.User) .FirstOrDefaultAsync(); if (model == null) { return(null); } List <string> equipment = new List <string>(); foreach (var item in model.Equipments) { string tmp = item.Equipment.IdString; equipment.Add(tmp); } List <FileViewModel> fileViewModels = new List <FileViewModel>(); foreach (var item in model.Files.Where(x => x.Deleted == false)) { fileViewModels.Add(new FileViewModel() { Name = item.Name, Path = item.Path + item.Hash, Type = item.Type }); } CarOfferViewModel carOffer = new CarOfferViewModel { CarModel = model.CarModel.IdString, CarProducent = model.CarProducent.IdString, Fuel = model.Fuel.IdString, Description = model.Description, ShortDescription = model.ShortDescription, Title = model.Title, PhoneNumber = model.PhoneNumber, Equipment = equipment, Year = model.Year, Price = model.Price, VinNumber = model.VinNumber, Mileage = model.Mileage, Condition = model.Condition, Country = model.Country, Seat = model.Seat, Door = model.Door, Color = model.Color, HoursePower = model.HoursePower, FileViewModels = fileViewModels, }; return(new { Succeeded = true, carOffer }); } catch { return(new { Succeeded = false }); } }
public async Task <object> Update(CarOfferViewModel model, string token) { string user = JwtDecode.User(token); var offer = await _context.CarOffers .Where(x => x.User.NormalizedUserName == user.ToUpper()) .Where(x => x.Title == model.Title) .Include(x => x.Equipments) .ThenInclude(x => x.Equipment) .Include(x => x.CarModel) .Include(x => x.CarProducent) .Include(x => x.Fuel) .Include(x => x.Files) .FirstOrDefaultAsync(); if (offer == null) { return new { Succeeded = false, Errors = new[] { new { Code = "NotFound" } } } } ; offer.CarModel = await _context.CarModels.Where(x => x.IdString == model.CarModel).FirstOrDefaultAsync(); offer.CarProducent = await _context.CarProducents.Where(x => x.IdString == model.CarProducent).FirstOrDefaultAsync(); offer.Color = model.Color; offer.Condition = model.Condition; offer.Country = model.Country; offer.Description = model.Description; offer.Door = model.Door; offer.HoursePower = model.HoursePower; offer.Mileage = model.Mileage; offer.PhoneNumber = model.PhoneNumber; offer.Price = model.Price; offer.Seat = model.Seat; offer.ShortDescription = model.ShortDescription; offer.VinNumber = model.VinNumber; offer.Year = model.Year; 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 = offer.Id, EquipmentId = eqId }); } } List <File> files = new List <File>(); foreach (var item in model.FileViewModels) { if (item.Base64 != null) { 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("-", "").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() }); } } else if (item.Type == "image" && (item.Base64 == "" || item.Base64 == null)) { var img = await _context.Files.Where(x => (x.Path + x.Hash) == item.Path).FirstOrDefaultAsync(); if (img != null) { files.Add(img); } } } offer.Files = files; offer.Equipments = equipments; _context.Update(offer); await _context.SaveChangesAsync(); return(new { Succeeded = true }); } }
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 }); }