Exemplo n.º 1
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(Id)} is require"));
            }
            if (PricePurchase <= 0)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(PricePurchase)} require positive"));
            }
            if (PriceSale <= 0)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(PriceSale)} require positive"));
            }
            if (string.IsNullOrWhiteSpace(VehicleId))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(VehicleId)} is required"));
            }
            var exists = await handler.DbContext.Announcements.AnyAsync(a => a.Id == Id);

            if (!exists)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Announcement with id: {Id} does not exists"));
            }
            var existsVehicle = await handler.DbContext.Vehicles.AnyAsync(v => v.Id == VehicleId);

            if (!existsVehicle)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Vehicle with id: {VehicleId} does not exists"));
            }
            return(null);
        }
Exemplo n.º 2
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var vehicle = await handler.DbContext.Vehicles.FindAsync(Id);

            vehicle.SetData(
                year: Year,
                color: ColorId,
                fuel: FuelId,
                modelId: ModelId,
                photoDate: string.IsNullOrWhiteSpace(ImageBase64)
                    ? null
                    : (Nullable <DateTime>)DateTime.Now
                );
            var fileName = $"{vehicle.Id}.jpg";

            if (!string.IsNullOrWhiteSpace(ImageBase64))
            {
                await Base64.SaveAsync(ImageBase64, EPath.Photos, fileName);
            }
            else
            {
                Base64.Remove(EPath.Photos, fileName);
            }
            handler.DbContext.Update(vehicle);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 3
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Id)} is required"));
            }
            if (Year <= 1950)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(Year)} require upper 150"));
            }
            if (!Enum.IsDefined(typeof(EFuel), FuelId))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(FuelId)} is required"));
            }
            if (!Enum.IsDefined(typeof(EColor), ColorId))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(ColorId)} is required"));
            }
            if (string.IsNullOrWhiteSpace(ModelId))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(ModelId)} is required"));
            }
            var existsModel = await handler.DbContext.Models.AnyAsync(m => m.Id == ModelId);

            if (!existsModel)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Model with id: {ModelId} does not exsits"));
            }
            return(null);
        }
Exemplo n.º 4
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Id)} is require"));
            }
            if (string.IsNullOrWhiteSpace(ContactName) || ContactName.Length > 150)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {ContactName} invalid"));
            }
            if (string.IsNullOrWhiteSpace(ContactPhone) || ContactPhone.Length > 15)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {ContactPhone} invalid"));
            }
            if (string.IsNullOrWhiteSpace(AnnouncementId))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(AnnouncementId)} is required"));
            }
            var existsPhone = await handler.DbContext.Contacts.AnyAsync(c => c.Name != ContactName && c.Phone == ContactPhone);

            if (existsPhone)
            {
                return(new MutationResult(EStatusCode.Conflict, $"Contact with {nameof(ContactPhone)} already exists"));
            }
            var existsAnnouncement = await handler.DbContext.Announcements.AnyAsync(a => a.Id == AnnouncementId);

            if (!existsAnnouncement)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Announcement with id: {AnnouncementId} does not exists"));
            }
            return(null);
        }
Exemplo n.º 5
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var contact = await handler.DbContext.Contacts
                          .Where(c => c.Name == ContactName && c.Phone == ContactPhone)
                          .FirstOrDefaultAsync();

            if (contact == null)
            {
                contact = new Contact(
                    id: RandomId.NewId(),
                    name: ContactName,
                    phone: ContactPhone
                    );
                await handler.DbContext.AddAsync(contact);
            }

            var reservation = new Reservation(
                id: Id,
                contactId: contact.Id,
                announcementId: AnnouncementId
                );

            await handler.DbContext.AddAsync(reservation);

            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 6
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Id)} is required"));
            }
            if (string.IsNullOrWhiteSpace(Name) || Name.Length > 200)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(Name)} is invalid"));
            }
            if (string.IsNullOrWhiteSpace(BrandId))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(BrandId)} is required"));
            }
            var existsName = await handler.DbContext.Models.AnyAsync(m => m.Name == Name);

            if (existsName)
            {
                return(new MutationResult(EStatusCode.Conflict, $"Model with {nameof(Name)} already exists"));
            }
            var existsBrand = await handler.DbContext.Brands.AnyAsync(b => b.Id == BrandId);

            if (!existsBrand)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Brand with id: {BrandId} does not exists"));
            }
            return(null);
        }
Exemplo n.º 7
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var announcement = await handler.DbContext.Announcements.FindAsync(Id);

            handler.DbContext.Remove(announcement);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
 public AuthenticationHandler(
     IOptionsMonitor <AuthenticationSchemeOptions> options,
     ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock,
     VehicleMutationsHandler mutationsHandler, VehicleQueriesHandler queriesHandler
     ) : base(options, logger, encoder, clock)
 {
     _mutationsHanlder = mutationsHandler;
     _queriesHanlder   = queriesHandler;
 }
Exemplo n.º 9
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var brand = await handler.DbContext.Brands.FindAsync(Id);

            handler.DbContext.Brands.Remove(brand);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 10
0
 public BaseTests(VehicleFixture fixture, string url)
 {
     Request            = fixture.Request;
     EntitiesFactory    = fixture.EntitiesFactory;
     MutationsDbContext = fixture.MutationsHandler.DbContext;
     MutationsHandler   = fixture.MutationsHandler;
     QueriesHandler     = fixture.QueriesHandler;
     Uri = new Uri($"{fixture.Client.BaseAddress}{url}");
 }
Exemplo n.º 11
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var vehicle = await handler.DbContext.Vehicles.FindAsync(Id);

            vehicle.Sell(DateSale.Value.Date);
            handler.DbContext.Update(vehicle);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 12
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var brand = new Brand(
                id: Id,
                name: Name
                );
            await handler.DbContext.Brands.AddAsync(brand);

            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 13
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var vehicle = await handler.DbContext.Vehicles.FindAsync(Id);

            handler.DbContext.Remove(vehicle);
            var fileName = $"{vehicle.Id}.jpg";

            Base64.Remove(EPath.Photos, fileName);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 14
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var model = await handler.DbContext.Models.FindAsync(Id);

            model.SetData(
                name: Name,
                brandId: BrandId
                );
            handler.DbContext.Models.Update(model);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 15
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(Id)} is required"));
            }
            var exists = await handler.DbContext.Brands.AnyAsync(b => b.Id == Id);

            if (!exists)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Brand with {nameof(Id)} does not exists"));
            }
            return(null);
        }
Exemplo n.º 16
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var model = new Model(
                id: Id,
                name: Name,
                brandId: BrandId
                );

            await handler.DbContext.Models.AddAsync(model);

            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 17
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var reservation = await handler.DbContext.Reservations
                              .Include(i => i.Announcement)
                              .Where(r => r.Id == Id)
                              .FirstOrDefaultAsync();

            reservation.SetDateSale(DateSale.Value.Date);
            reservation.Announcement.SetDateSale(DateSale.Value.Date);
            handler.DbContext.Update(reservation);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 18
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var announcement = new Announcement(
                id: Id,
                pricePurchase: PricePurchase,
                priceSale: PriceSale,
                vehicleId: VehicleId,
                dateSale: null
                );
            await handler.DbContext.AddAsync(announcement);

            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 19
0
        public VehicleFixture()
        {
            var builder = new DbContextOptionsBuilder <VehicleMutationsDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())
                          .EnableSensitiveDataLogging()
                          .EnableDetailedErrors();
            var mutationsDbContext = new VehicleMutationsDbContext(builder.Options);

            MutationsHandler = new VehicleMutationsHandler(mutationsDbContext);

            VehicleStartup.Configure(
                secret: string.Empty,
                pathFiles: string.Empty
                );
        }
Exemplo n.º 20
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var announcement = await handler.DbContext.Announcements.FindAsync(Id);

            announcement.SetData(
                pricePurchase: PricePurchase,
                priceSale: PriceSale,
                dateSale: announcement.DateSale,
                vehicleId: VehicleId
                );
            handler.DbContext.Update(announcement);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 21
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Login))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Login)} is require"));
            }
            if (string.IsNullOrWhiteSpace(Password))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Password)} is require"));
            }
            var exists = await handler.DbContext.Users.AnyAsync(u => u.Login == Login);

            if (!exists)
            {
                return(new MutationResult(EStatusCode.Unauthorized, "Login fail"));
            }
            return(null);
        }
Exemplo n.º 22
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Id)} is require"));
            }
            if (DateSale == null)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(DateSale)} require"));
            }
            var exists = await handler.DbContext.Reservations.AnyAsync(a => a.Id == Id);

            if (!exists)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Reservation with id: {Id} does not exists"));
            }
            return(null);
        }
Exemplo n.º 23
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(Id)} is required"));
            }
            if (string.IsNullOrWhiteSpace(Name) || Name.Length > 200)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Name)} is invalid"));
            }
            var existsName = await handler.DbContext.Brands.AnyAsync(b => b.Name == Name);

            if (existsName)
            {
                return(new MutationResult(EStatusCode.Conflict, $"Brand with {nameof(Name)} already exists"));
            }

            return(await Task.FromResult <MutationResult>(null));
        }
Exemplo n.º 24
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var reservation = await handler.DbContext.Reservations
                              .Include(i => i.Contact)
                              .Where(r => r.Id == Id)
                              .FirstOrDefaultAsync();

            reservation.SetData(
                announcementId: AnnouncementId,
                contact: reservation.Contact
                );
            reservation.Contact.SetData(
                name: ContactName,
                phone: ContactPhone
                );
            handler.DbContext.Update(reservation);
            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 25
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var user = await handler.DbContext.Users
                       .Where(u => u.Login == Login)
                       .FirstOrDefaultAsync();

            var valid = user.ValidatePassword(Password);

            if (!valid)
            {
                return(new MutationResult(EStatusCode.Unauthorized, "Login fail"));
            }
            var result = new LoginResult {
                Id    = user.Id,
                Name  = user.Name,
                Token = new TokenData(user.Id).Generate()
            };

            return(new MutationResult(EStatusCode.Success, "Login successfull", result));
        }
Exemplo n.º 26
0
        private void ConfigureServices(IServiceCollection services)
        {
            var contentRoot = GetProjectPath();

            var manager = new ApplicationPartManager
            {
                ApplicationParts =
                {
                    new AssemblyPart(typeof(Startup).GetTypeInfo().Assembly)
                },
                FeatureProviders =
                {
                    new ControllerFeatureProvider(),
                    new ViewComponentFeatureProvider()
                }
            };

            services.AddDbContext <VehicleMutationsDbContext>(options => options
                                                              .UseMySql(Configuration.GetConnectionString("VehicleMutations"))
                                                              .EnableDetailedErrors()
                                                              );

            services.AddDbContext <VehicleQueriesDbContext>(options => options
                                                            .UseMySql(Configuration.GetConnectionString("VehicleQueries"))
                                                            .EnableDetailedErrors()
                                                            );

            var scope = services
                        .BuildServiceProvider()
                        .CreateScope();

            var scopedServices = scope.ServiceProvider;

            MutationsDbContext = scopedServices.GetRequiredService <VehicleMutationsDbContext>();
            QueriesDbContext   = scopedServices.GetRequiredService <VehicleQueriesDbContext>();
            MutationsHandler   = new VehicleMutationsHandler(MutationsDbContext);
            QueriesHandler     = new VehicleQueriesHandler(QueriesDbContext);
            EntitiesFactory    = new EntitiesFactory(MutationsDbContext);
            MutationsDbContext.Database.EnsureCreated();
            services.AddSingleton(manager);
        }
Exemplo n.º 27
0
        public async Task <MutationResult> ExecuteAsync(VehicleMutationsHandler handler)
        {
            var vehicle = new Entities.Vehicle(
                id: Id,
                year: Year,
                fuel: FuelId,
                color: ColorId,
                modelId: ModelId,
                photoDate: string.IsNullOrWhiteSpace(ImageBase64)
                    ? null
                    : (Nullable <DateTime>)DateTime.Now
                );

            if (!string.IsNullOrWhiteSpace(ImageBase64))
            {
                await Base64.SaveAsync(ImageBase64, EPath.Photos, $"{vehicle.Id}.jpg");
            }
            await handler.DbContext.Vehicles.AddAsync(vehicle);

            var rows = await handler.DbContext.SaveChangesAsync();

            return(new MutationResult(rows));
        }
Exemplo n.º 28
0
        public async Task <MutationResult> ValidateAsync(VehicleMutationsHandler handler)
        {
            if (string.IsNullOrWhiteSpace(Id))
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Parameter {nameof(Id)} is required"));
            }
            if (DateSale == null)
            {
                return(new MutationResult(EStatusCode.InvalidData, $"Paramter {nameof(DateSale)} is require"));
            }
            var existsVehicle = await handler.DbContext.Vehicles.AnyAsync(v => v.Id == Id);

            if (!existsVehicle)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Vehicle with id: {Id} does not exists"));
            }
            var existsAnnouncement = await handler.DbContext.Announcements.AnyAsync(a => a.VehicleId == Id && a.DateSale == null);

            if (!existsAnnouncement)
            {
                return(new MutationResult(EStatusCode.NotFound, $"Announcement by VehicleId: {Id} does not exists or already Sell"));
            }
            return(null);
        }
Exemplo n.º 29
0
 public VehiclesController(VehicleMutationsHandler mutationsHandler, VehicleQueriesHandler queriesHandler)
 {
     _mutationsHanlder = mutationsHandler;
     _queriesHanlder   = queriesHandler;
 }
Exemplo n.º 30
0
 protected TestsBase(VehicleFixture fixture)
 {
     EntitiesFactory    = new EntitiesFactory(fixture.MutationsHandler.DbContext);
     MutationsDbContext = fixture.MutationsHandler.DbContext;
     MutationsHandler   = fixture.MutationsHandler;
 }