Exemple #1
0
        public static async Task <IDictionary <DayOfWeek, Dictionary <DateTime, bool> > > GetFinalOpeningAsync(SubTask subTask)
        {
            IList <WorkerUser> workerUsers;

            workerUsers = await ApplicationEntityManager.GetWorkerUsersByCompanyIdAsync(subTask.CompanyUserId);

            return(OpeningHandler.GetFinalOpening(workerUsers, subTask));
        }
        public void GetService_ShallReturnRequestedServicec()
        {
            var config  = Options.Create <DicomAdapterConfiguration>(new DicomAdapterConfiguration());
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object, _serviceScopeFactory.Object, config);

            Assert.Equal(manager.GetService <ILoggerFactory>(), _loggerFactory.Object);
            Assert.Equal(manager.GetService <IPayloads>(), _payloadsApi.Object);
        }
        public void NextAssociationNumber_ShallResetToZero()
        {
            var config  = Options.Create <DicomAdapterConfiguration>(new DicomAdapterConfiguration());
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object, _serviceScopeFactory.Object, config);

            for (uint i = 1; i < 10; i++)
            {
                Assert.Equal(i, manager.NextAssociationNumber());
            }
        }
        public void GetService_ShallReturnRequestedServicec()
        {
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object,
                                                       _serviceScopeFactory.Object,
                                                       _claraAeChangedNotificationService.Object,
                                                       _connfiguration,
                                                       _storageInfoProvider.Object);

            Assert.Equal(manager.GetService <ILoggerFactory>(), _loggerFactory.Object);
            Assert.Equal(manager.GetService <IJobRepository>(), _jobStore.Object);
        }
        public void NextAssociationNumber_ShallResetToZero()
        {
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object,
                                                       _serviceScopeFactory.Object,
                                                       _claraAeChangedNotificationService.Object,
                                                       _connfiguration,
                                                       _storageInfoProvider.Object);

            for (uint i = 1; i < 10; i++)
            {
                Assert.Equal(i, manager.NextAssociationNumber());
            }
        }
        public void HandleCStoreRequest_ShallThrowIfAENotConfigured()
        {
            var config  = Options.Create <DicomAdapterConfiguration>(new DicomAdapterConfiguration());
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object, _serviceScopeFactory.Object, config);

            var request   = GenerateRequest();
            var exception = Assert.Throws <ArgumentException>(() =>
            {
                manager.HandleCStoreRequest(request, "BADAET");
            });

            Assert.Equal("Called AE Title 'BADAET' is not configured", exception.Message);
        }
        public void IsAeTitleConfigured()
        {
            var aet    = "TESTAET";
            var config = Options.Create <DicomAdapterConfiguration>(new DicomAdapterConfiguration());

            config.Value.ReadAeTitlesFromCrd = false;
            config.Value.Dicom.Scp.AeTitles.Add(new ClaraApplicationEntity
            {
                AeTitle   = aet,
                Processor = "Nvidia.Clara.DicomAdapter.Test.Unit.MockJobProcessor, Nvidia.Clara.Dicom.Test.Unit"
            });
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object, _serviceScopeFactory.Object, config);

            Assert.True(manager.IsAeTitleConfigured(aet));
            Assert.False(manager.IsAeTitleConfigured("BAD"));
        }
Exemple #8
0
        public static async Task <IList <SelectListItem> > GetCarsByIdAsync(string userId)
        {
            IList <Car> cars = await ApplicationEntityManager.GetCarsByUserIdAsync(userId);

            IList <SelectListItem> selectListOfCars = new List <SelectListItem>();

            foreach (var car in cars)
            {
                SelectListItem carItem = new SelectListItem
                {
                    Value = car.Id.ToString(),
                    Text  = car.Model + " " + car.YearOfManufacture
                };
                selectListOfCars.Add(carItem);
            }

            return(selectListOfCars);
        }
        public void HandleCStoreRequest_ShallThrowIfAENotConfigured()
        {
            _storageInfoProvider.Setup(p => p.HasSpaceAvailableToStore).Returns(true);
            _storageInfoProvider.Setup(p => p.AvailableFreeSpace).Returns(100);
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object,
                                                       _serviceScopeFactory.Object,
                                                       _claraAeChangedNotificationService.Object,
                                                       _connfiguration,
                                                       _storageInfoProvider.Object);

            var request   = GenerateRequest();
            var exception = Assert.Throws <ArgumentException>(() =>
            {
                manager.HandleCStoreRequest(request, "BADAET", 1);
            });

            Assert.Equal("Called AE Title 'BADAET' is not configured", exception.Message);
            _storageInfoProvider.Verify(p => p.HasSpaceAvailableToStore, Times.Never());
            _storageInfoProvider.Verify(p => p.AvailableFreeSpace, Times.Never());
        }
        public void HandleCStoreRequest_ThrowWhenOnLowStorageSpace()
        {
            _storageInfoProvider.Setup(p => p.HasSpaceAvailableToStore).Returns(false);
            _storageInfoProvider.Setup(p => p.AvailableFreeSpace).Returns(100);
            var aet = "TESTAET";

            var data = new List <ClaraApplicationEntity>()
            {
                new ClaraApplicationEntity()
                {
                    AeTitle   = aet,
                    Name      = aet,
                    Processor = typeof(MockJobProcessor).AssemblyQualifiedName
                }
            };

            _claraApplicationEntityRepository.Setup(p => p.AsQueryable()).Returns(data.AsQueryable());
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object,
                                                       _serviceScopeFactory.Object,
                                                       _claraAeChangedNotificationService.Object,
                                                       _connfiguration,
                                                       _storageInfoProvider.Object);

            var request = GenerateRequest();

            Assert.Throws <InsufficientStorageAvailableException>(() =>
            {
                manager.HandleCStoreRequest(request, aet, 2);
            });

            _logger.VerifyLogging($"{aet} added to AE Title Manager", LogLevel.Information, Times.Once());
            _logger.VerifyLogging($"Patient ID: {request.Dataset.GetSingleValue<string>(DicomTag.PatientID)}", LogLevel.Information, Times.Never());
            _logger.VerifyLogging($"Study Instance UID: {request.Dataset.GetSingleValue<string>(DicomTag.StudyInstanceUID)}", LogLevel.Information, Times.Never());
            _logger.VerifyLogging($"Series Instance UID: {request.Dataset.GetSingleValue<string>(DicomTag.SeriesInstanceUID)}", LogLevel.Information, Times.Never());
            _logger.VerifyLoggingMessageBeginsWith($"Storage File Path:", LogLevel.Information, Times.Never());
            _logger.VerifyLoggingMessageBeginsWith($"Instance saved with handler", LogLevel.Debug, Times.Never());

            _claraApplicationEntityRepository.Verify(p => p.AsQueryable(), Times.Once());
            _storageInfoProvider.Verify(p => p.HasSpaceAvailableToStore, Times.AtLeastOnce());
            _storageInfoProvider.Verify(p => p.AvailableFreeSpace, Times.AtLeastOnce());
        }
Exemple #11
0
        private static async Task <int?> ServiceExistsAsync(int carId)
        {
            bool carHasService = ApplicationEntityManager.CarHasService(carId);

            if (carHasService)
            {
                IList <Service> services = await ApplicationEntityManager.GetServicesByCarIdAsync(carId);

                foreach (var service in services)
                {
                    foreach (var work in service.Works)
                    {
                        if (!work.State.Name.Equals("Finished") && !work.State.Name.Equals("FinishedAndPaid"))
                        {
                            return(service.Id);
                        }
                    }
                }
            }

            return(null);
        }
        public void IsAeTitleConfigured()
        {
            var aet  = "TESTAET";
            var data = new List <ClaraApplicationEntity>()
            {
                new ClaraApplicationEntity()
                {
                    AeTitle   = aet,
                    Name      = aet,
                    Processor = typeof(MockJobProcessor).AssemblyQualifiedName
                }
            };

            _claraApplicationEntityRepository.Setup(p => p.AsQueryable()).Returns(data.AsQueryable());
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object,
                                                       _serviceScopeFactory.Object,
                                                       _claraAeChangedNotificationService.Object,
                                                       _connfiguration,
                                                       _storageInfoProvider.Object);

            Assert.True(manager.IsAeTitleConfigured(aet));
            Assert.False(manager.IsAeTitleConfigured("BAD"));
        }
        public void HandleCStoreRequest_ShallSaveInstanceThroughAEHandler()
        {
            var aet    = "TESTAET";
            var config = Options.Create <DicomAdapterConfiguration>(new DicomAdapterConfiguration());

            config.Value.ReadAeTitlesFromCrd = false;
            config.Value.Dicom.Scp.AeTitles.Add(new ClaraApplicationEntity
            {
                AeTitle   = aet,
                Processor = "Nvidia.Clara.DicomAdapter.Test.Unit.MockJobProcessor, Nvidia.Clara.Dicom.Test.Unit"
            });
            var manager = new ApplicationEntityManager(_hostApplicationLifetime.Object, _serviceScopeFactory.Object, config);

            var request = GenerateRequest();

            manager.HandleCStoreRequest(request, aet);

            _logger.VerifyLogging($"{aet} added to AE Title Manager", LogLevel.Information, Times.Once());
            _logger.VerifyLogging($"Patient ID: {request.Dataset.GetSingleValue<string>(DicomTag.PatientID)}", LogLevel.Information, Times.Once());
            _logger.VerifyLogging($"Study Instance UID: {request.Dataset.GetSingleValue<string>(DicomTag.StudyInstanceUID)}", LogLevel.Information, Times.Once());
            _logger.VerifyLogging($"Series Instance UID: {request.Dataset.GetSingleValue<string>(DicomTag.SeriesInstanceUID)}", LogLevel.Information, Times.Once());
            _logger.VerifyLoggingMessageBeginsWith($"Storage File Path:", LogLevel.Information, Times.Once());
            _logger.VerifyLogging($"Instance saved with handler", LogLevel.Debug, Times.Once());
        }
 public CompanyLogic(CarServiceDbContext carServiceDbContext)
 {
     _applicationEntityManager = new ApplicationEntityManager(carServiceDbContext);
 }
Exemple #15
0
        public static async Task <Work> MakeAppointmentAsync(DateTime appointment, int carId, SubTask subTask, string description)
        {
            subTask = await ApplicationEntityManager.GetSubTaskByIdAsync(subTask.Id);

            IList <WorkerUser> workerUsers = await ApplicationEntityManager.GetWorkerUsersByCompanyIdAsync(subTask.CompanyUserId);

            workerUsers.Shuffle();

            WorkerUser workerForTheJob = WorkerHandler.GetWorkerForTheJob(workerUsers, appointment, appointment.AddMinutes(subTask.EstimtedTime));

            int?openServiceId = await ServiceExistsAsync(carId);

            Car car = await ApplicationEntityManager.GetCarByIdAsync(carId);

            Service service;

            if (!openServiceId.HasValue)
            {
                service = new Service
                {
                    StartingTime = appointment,
                    EndTime      = appointment.AddMinutes(subTask.EstimtedTime),
                    TotalPrice   = subTask.EstimatedPrice,
                    CarId        = carId
                };

                await ApplicationEntityManager.SaveServiceAsync(service);
            }
            else
            {
                service = await ApplicationEntityManager.GetServcieByIdAsync(openServiceId.Value);

                if (service.Works.ElementAt(0).SubTask.CompanyUserId == subTask.CompanyUserId)
                {
                    service.TotalPrice = 0;
                    foreach (var w in service.Works)
                    {
                        service.TotalPrice += w.Price;
                    }
                    service.TotalPrice += subTask.EstimatedPrice;

                    if (appointment < service.StartingTime)
                    {
                        service.StartingTime = appointment;
                    }

                    if (appointment.AddMinutes(subTask.EstimtedTime) > service.EndTime)
                    {
                        service.EndTime = appointment.AddMinutes(subTask.EstimtedTime);
                    }

                    ApplicationEntityManager.ModifyService(service);
                }
                else
                {
                    service = new Service
                    {
                        StartingTime = appointment,
                        EndTime      = appointment.AddMinutes(subTask.EstimtedTime),
                        TotalPrice   = subTask.EstimatedPrice,
                        CarId        = carId
                    };

                    await ApplicationEntityManager.SaveServiceAsync(service);
                }
            }

            Work work = new Work
            {
                StartingTime = appointment,
                EndTime      = appointment.AddMinutes(subTask.EstimtedTime),
                Price        = subTask.EstimatedPrice,
                SubTaskId    = subTask.Id,
                ServiceId    = service.Id,
                StateId      = 2,
                WorkerUserId = workerForTheJob.Id
            };

            await ApplicationEntityManager.SaveWorkAsync(work);

            Message message = new Message
            {
                SenderId = car.ClientUserId,
                Text     = description,
                WorkId   = work.Id,
                Time     = DateTime.Now
            };

            await ApplicationEntityManager.SaveMessageAsync(message);

            return(work);
        }
Exemple #16
0
 public AppointmentLogic(CarServiceDbContext context)
 {
     _applicationEntityManager = new ApplicationEntityManager(context);
 }
Exemple #17
0
 public EmailLogic(CarServiceDbContext carServiceDbContext, IEmailSender emailSender)
 {
     _applicationEntityManager = new ApplicationEntityManager(carServiceDbContext);
     _emailSender = emailSender;
 }
Exemple #18
0
 public static async Task SaveMessageAsync(Message message)
 {
     await ApplicationEntityManager.SaveMessageAsync(message);
 }
Exemple #19
0
 public static async Task <IList <Work> > GetWorksByServiceIdAsync(int serviceId)
 {
     return(await ApplicationEntityManager.GetWorksByServiceIdAsync(serviceId));
 }
 public static async Task <IList <Service> > GetMyServicesAsync(string id)
 {
     return(await ApplicationEntityManager.GetServiceByUserIdAsync(id));
 }
 public static async Task <Work> GetWorkByIdAsync(int?id)
 {
     return(await ApplicationEntityManager.GetWorkByIdAsync(id.Value));
 }
 public WorkSheetLogic(CarServiceDbContext context)
 {
     _applicationEntityManager = new ApplicationEntityManager(context);
 }
Exemple #23
0
 public static async Task <SubTask> GetSubTaskByIdAsync(int id)
 {
     return(await ApplicationEntityManager.GetSubTaskByIdAsync(id));
 }
 public static async Task <IList <Work> > GetRemainingWorksByWorkerIdAsync(string workerId)
 {
     return(await ApplicationEntityManager.GetRemainingWorksByWorkerIdAsync(workerId));
 }
 public static async Task <IList <Service> > GetServicesByCompanyIdAsync(CompanyUser user)
 {
     return(await ApplicationEntityManager.GetServicesByCompanyIdAsync(user));
 }
 public static async Task ModifyWorkAsync(Work work)
 {
     await ApplicationEntityManager.ModifyWorkAsync(work);
 }
 public static async Task <Service> GetServiceByIdAsync(int id)
 {
     return(await ApplicationEntityManager.GetServiceByIdAsync(id));
 }