예제 #1
0
        protected override void Handle(AssignMechanicCommand request)
        {
            var activity = _dbContext.Activities.FirstOrDefault(x => x.Id == request.ActivityId);

            if (activity != null)
            {
                var mechanic = _dbContext.Employees.Include(e => e.Identity).
                               FirstOrDefault(m => m.Id == request.MechanicId);

                if (mechanic != null)
                {
                    activity.AssignMechanic(mechanic);
                }
                else
                {
                    throw new Exception("cannot find mechanic");
                }
            }
            else
            {
                throw new Exception("cannot find activity");
            }

            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not assign mechanic");
            }
        }
예제 #2
0
        protected override void Handle(UpdateEmployeeCommand request)
        {
            var employee = _dbContext.Employees
                           .Include(e => e.Identity)
                           .FirstOrDefault(e => e.Id.ToString() == request.Id);

            employee.Update(request.FirstName, request.LastName, request.EmployeeRole, request.UserName);

            _dbContext.SaveChanges();
        }
예제 #3
0
        protected override void Handle(FinishRepairCommand request)
        {
            var repair = _dbContext.Repairs.FirstOrDefault(r => r.Id.ToString() == request.Id);

            repair.Finish(request.Result);

            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not finish repair");
            }
        }
예제 #4
0
        public static void PopulateTestData(KOServiceDbContext dbContext)
        {
            dbContext.Activities.Add(new Domain.Entities.Activity(new Guid("d2157b7a-c81e-47dc-9d5f-a4a33f5d5587"), new Guid("f87cfd0f-1e90-4803-91fe-8269d4c69153"), "wymiana silnika", 0));
            dbContext.Repairs.Add(new Domain.Entities.Repair(new Guid("3297fa03-afa0-495c-965e-c9b3b712358f"), "naprawa bwm e39", Guid.NewGuid(), Guid.NewGuid()));
            dbContext.Employees.Add(new Domain.Entities.Employee(new Guid("4cd4ac80-867c-468c-9149-8de382edef44"), "Janusz", "Mechank", Domain.Authentication.EmployeeRole.Mechanic));

            if (dbContext.SaveChanges() == 0)
            {
                throw new Exception("cannot seed data!");
            }
        }
예제 #5
0
        protected override void Handle(RegisterCommand request)
        {
            var employee = new Domain.Entities.Employee(Guid.NewGuid(), request.FirstName, request.LastName, request.IdentityId);

            _dbContext.Employees.Add(employee);

            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not register new user");
            }
        }
예제 #6
0
        protected override void Handle(CreateRepairCommand request)
        {
            var client = _dbContext.Clients.Include(c => c.Address)
                         .Include(c => c.Vehicles)
                         .ThenInclude(v => v.Repairs)
                         .FirstOrDefault(c => c.Id == request.Client.Id);

            var manager = _dbContext.Employees.Include(e => e.Identity)
                          .Include(m => m.Repairs)
                          .FirstOrDefault(e => e.Id == request.ManagerId);

            var vehicle = _dbContext.Vehicles.Include(v => v.Type)
                          .Include(v => v.Repairs)
                          .FirstOrDefault(v => v.Id == request.Vehicle.Id);

            if (client == null)
            {
                client = new Client(request.Client.Id,
                                    request.Client.FirstName,
                                    request.Client.LastName,
                                    request.Client.PhoneNumber,
                                    request.Client.Email,
                                    request.Client.Street,
                                    request.Client.City,
                                    request.Client.Code);
                _dbContext.Clients.Add(client);
            }
            else
            {
                client.UpdateAddress(request.Client.Street, request.Client.City, request.Client.Code);
                client.UpdateContactDetails(request.Client.PhoneNumber, request.Client.Email);
            }

            if (vehicle == null)
            {
                if (_dbContext.VehicleTypes.Any(vt => vt.Id == request.Vehicle.TypeId))
                {
                    vehicle = new Domain.Entities.Vehicle(request.Vehicle.Id, request.Vehicle.RegistrationNumbers, client.Id, request.Vehicle.TypeId);
                }
                else
                {
                    vehicle = new Domain.Entities.Vehicle(request.Vehicle.Id, client.Id, request.Vehicle.RegistrationNumbers, request.Vehicle.Brand, request.Vehicle.Model);
                }
            }

            var repair = new Domain.Entities.Repair(request.Repair.Id, request.Repair.Description, manager.Id, vehicle.Id);

            client.AddRepair(repair, vehicle);
            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not create new repair");
            }
        }
예제 #7
0
        protected override void Handle(TerminateEmployeeCommand request)
        {
            var employee = _dbContext.Employees.FirstOrDefault(e => e.Id.ToString() == request.Id);

            if (employee != null)
            {
                employee.Terminate();
            }

            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not terminate employee");
            }
        }
예제 #8
0
        protected override void Handle(RejectPricingCommand request)
        {
            var repair = _dbContext.Repairs.Include(r => r.Pricing)
                         .FirstOrDefault(r => r.Pricing.ClientRepairNumber == request.RepairNumber);

            if (repair != null)
            {
                repair.PricingRejected();
            }

            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not accept pricing");
            }
        }
예제 #9
0
        protected override void Handle(ChangeToInProgressActivityCommand request)
        {
            var activity = _dbContext.Activities.FirstOrDefault(a => a.Id == request.ActivityId);

            if (activity != null)
            {
                activity.ChangeToInProgress();
            }
            else
            {
                throw new Exception("Connot find activity");
            }

            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not open activity");
            }
        }
예제 #10
0
        protected override void Handle(FinishActivityCommand request)
        {
            var activity = _dbContext.Activities.FirstOrDefault(a => a.Id == request.ActivityId);

            if (activity != null)
            {
                activity.Finish(request.Comment);
            }
            else
            {
                throw new Exception("Connot find activity");
            }

            if (_dbContext.SaveChanges() == 0)
            {
                throw new Exception("Could not finish activity");
            }
        }
예제 #11
0
        protected override void Handle(CreateActivityCommand request)
        {
            var repair = _dbContext.Repairs.FirstOrDefault(rep => rep.Id == request.RepairId);

            if (repair == null)
            {
                throw new Exception("Could not create activity for unknown repair");
            }
            else
            {
                var activity = new Domain.Entities.Activity(Guid.NewGuid(), request.RepairId,
                                                            request.Description, request.SequenceNumber);

                repair.AssignActivity(activity);

                if (_dbContext.SaveChanges() == 0)
                {
                    throw new Exception("Could not create activity");
                }
            }
        }
예제 #12
0
        protected override void Handle(CreatePricingCommand request)
        {
            var repair = _dbContext.Repairs.FirstOrDefault(rep => rep.Id == request.RepairId);

            if (repair == null)
            {
                throw new Exception("Could not create pricing for unknown repair");
            }
            else
            {
                Domain.Entities.Pricing pricing = new Domain.Entities.Pricing(new Guid(), request.RepairId, request.Labour);
                List <Part>             parts   = new List <Part>();
                foreach (var item in request.Parts)
                {
                    Part part = new Part(new Guid(), item.Name, item.Manufacturer, item.ManufacturerId, item.Price);
                    parts.Add(part);
                }
                pricing.AddParts(parts);

                _dbContext.Pricings.Add(pricing);
                string clientRepairNumber;
                Domain.Entities.Repair repairWithSameNumber;
                do
                {
                    clientRepairNumber   = repair.GenerateClientRepairNumber();
                    repairWithSameNumber = _dbContext.Repairs.Include(rep => rep.Pricing)
                                           .FirstOrDefault(rep => rep.Pricing.ClientRepairNumber == clientRepairNumber);
                }while (repairWithSameNumber != null);

                repair.Priced(clientRepairNumber);
                if (_dbContext.SaveChanges() == 0)
                {
                    throw new Exception("Could not create pricing");
                }
            }
        }