private AdEditServiceModel InitializeValidAdEditServiceModel(int id)
        {
            var model = new AdEditServiceModel
            {
                Id          = id,
                PhoneNumber = SamplePhoneNumber,
                UserId      = SampleUserId,
                Vehicle     = new VehicleEditServiceModel
                {
                    ManufacturerId     = 1,
                    ModelName          = SampleModelName,
                    Description        = SampleDescription,
                    EngineHorsePower   = SampleEngineHorsePower,
                    FuelConsumption    = SampleFuelConsumption,
                    FuelTypeId         = SampleFuelTypeId,
                    TransmissionTypeId = SampleTransmissionTypeId,
                    Price      = SamplePrice,
                    FeatureIds = new List <int> {
                        1, 2, 3, 4, 5, 6, 7, 8, 9, 10
                    },
                    YearOfProduction = SampleYearOfManufacture,
                }
            };

            return(model);
        }
Exemplo n.º 2
0
        private async Task DeleteFeaturesByVehicleIdAsync(AdEditServiceModel serviceModel)
        {
            var features = await this.db
                           .VehicleFeatures
                           .Where(v => v.VehicleId == serviceModel.Id)
                           .ToListAsync();

            this.db.VehicleFeatures.RemoveRange(features);

            await this.db.SaveChangesAsync();
        }
Exemplo n.º 3
0
        public async Task <bool> UpdateAsync(AdEditServiceModel serviceModel)
        {
            if (serviceModel == null)
            {
                return(false);
            }

            try
            {
                var ad = await this.db
                         .Ads
                         .Include(v => v.Vehicle)
                         .SingleOrDefaultAsync(a => a.Id == serviceModel.Id);

                var modelId = await this.db
                              .Models
                              .Where(m => m.Name == serviceModel.Vehicle.ModelName)
                              .Select(m => m.Id)
                              .SingleOrDefaultAsync();

                if (ad == null || modelId == default(int))
                {
                    return(false);
                }

                var vehicle = ad.Vehicle;

                ad.PhoneNumber = serviceModel.PhoneNumber;

                vehicle.ModelId            = modelId;
                vehicle.Description        = serviceModel.Vehicle.Description;
                vehicle.ManufacturerId     = serviceModel.Vehicle.ManufacturerId;
                vehicle.FuelTypeId         = serviceModel.Vehicle.FuelTypeId;
                vehicle.TransmissionTypeId = serviceModel.Vehicle.TransmissionTypeId;
                vehicle.Engine             = serviceModel.Vehicle.Engine;
                vehicle.EngineHorsePower   = serviceModel.Vehicle.EngineHorsePower;
                vehicle.YearOfProduction   = serviceModel.Vehicle.YearOfProduction;
                vehicle.TotalMileage       = serviceModel.Vehicle.TotalMileage;
                vehicle.FuelConsumption    = serviceModel.Vehicle.FuelConsumption;
                vehicle.Price    = serviceModel.Vehicle.Price;
                vehicle.Pictures = serviceModel.Vehicle.Pictures;

                var vehicleFeatures = new List <VehicleFeature>();
                foreach (var featureId in serviceModel.Vehicle.FeatureIds)
                {
                    var vehicleFeature = new VehicleFeature
                    {
                        FeatureId = featureId,
                    };

                    vehicleFeatures.Add(vehicleFeature);
                }

                vehicle.Features = vehicleFeatures;

                await DeleteFeaturesByVehicleIdAsync(serviceModel); //TODO implement logic to check if the Id exists and to skip instead of deleting it.

                this.db.Update(vehicle);
                await this.db.SaveChangesAsync();

                return(true);
            }
            catch
            {
                return(false);
            }
        }