public static Props GetProps(
     IEmployeeVacationsRegistryPropsFactory employeeVacationsRegistryPropsFactory,
     IEmployeeSickLeavesRegistryPropsFactory employeeSickLeavesRegistryPropsFactory)
 {
     return(Props.Create(() => new EmployeesActor(
                             employeeVacationsRegistryPropsFactory,
                             employeeSickLeavesRegistryPropsFactory)));
 }
        public EmployeeActor(
            EmployeeStoredInformation storedInformation,
            IActorRef imageResizer,
            IActorRef vacationsCreditRegistry,
            IEmployeeVacationsRegistryPropsFactory employeeVacationsRegistryPropsFactory,
            IEmployeeSickLeavesRegistryPropsFactory employeeSickLeavesRegistryPropsFactory)
        {
            this.employeeMetadata = storedInformation.Metadata;
            this.PersistenceId    = $"employee-info-{Uri.EscapeDataString(this.employeeMetadata.EmployeeId)}";

            this.photo = Context.ActorOf(Props.Create(() => new PhotoActor(imageResizer)), "photo");
            this.photo.Tell(new PhotoActor.SetSource(storedInformation.Photo));

            this.employeeFeed = Context.ActorOf(FeedActor.GetProps(), "feed");

            var persistenceSupervisorFactory = new PersistenceSupervisorFactory();

            var vacationActorProps = EmployeeVacationsActor.CreateProps(
                this.employeeMetadata.EmployeeId,
                this.employeeFeed,
                vacationsCreditRegistry,
                employeeVacationsRegistryPropsFactory);

            var sickLeaveActorProps = EmployeeSickLeaveActor.CreateProps(
                this.employeeMetadata.EmployeeId,
                employeeSickLeavesRegistryPropsFactory);

            var workHoursActorProps = EmployeeWorkHoursActor.CreateProps(this.employeeMetadata.EmployeeId);

            var vacationsActor = Context.ActorOf(vacationActorProps, "vacations");

            var sickLeavesActor = Context.ActorOf(sickLeaveActorProps, "sick-leaves");

            var workHoursActor = Context.ActorOf(
                persistenceSupervisorFactory.Get(workHoursActorProps),
                "work-hours");

            var calendarActor = Context.ActorOf(
                EmployeeCalendarActor.CreateProps(
                    this.employeeMetadata.EmployeeId,
                    vacationsActor,
                    workHoursActor,
                    sickLeavesActor),
                "all-calendar-events"
                );

            var pendingActionsActor = Context.ActorOf(
                EmployeePendingActionsActor.CreateProps(this.employeeMetadata.EmployeeId),
                "pending-actions"
                );

            this.calendar = new EmployeeCalendarContainer(
                vacationsActor,
                workHoursActor,
                sickLeavesActor,
                calendarActor,
                pendingActionsActor);
        }
Esempio n. 3
0
        public EmployeeSickLeaveActor(
            string employeeId,
            IEmployeeSickLeavesRegistryPropsFactory sickLeavesRegistryPropsFactory)
        {
            var persistenceSupervisorFactory = new PersistenceSupervisorFactory();

            var sickLeavesRegistryProps = sickLeavesRegistryPropsFactory.CreateProps(employeeId);

            this.sickLeavesRegistry = Context.ActorOf(
                persistenceSupervisorFactory.Get(sickLeavesRegistryProps),
                "sick-leaves-registry");
        }
 public static Props GetProps(
     EmployeeStoredInformation employeeStoredInformation,
     IActorRef imageResizer,
     IActorRef vacationsCreditRegistry,
     IEmployeeVacationsRegistryPropsFactory employeeVacationsRegistryPropsFactory,
     IEmployeeSickLeavesRegistryPropsFactory employeeSickLeavesRegistryPropsFactory
     ) => Props.Create(() => new EmployeeActor(
                           employeeStoredInformation,
                           imageResizer,
                           vacationsCreditRegistry,
                           employeeVacationsRegistryPropsFactory,
                           employeeSickLeavesRegistryPropsFactory));
        public EmployeesActor(
            IEmployeeVacationsRegistryPropsFactory employeeVacationsRegistryPropsFactory,
            IEmployeeSickLeavesRegistryPropsFactory employeeSickLeavesRegistryPropsFactory)
        {
            this.employeesInfoStorage = Context.ActorOf(EmployeesInfoStorage.GetProps, "employees-storage");
            this.logger.Info($"Image resizers pool size: {ResizersCount}");
            this.imageResizer = Context.ActorOf(
                Props.Create(() => new ImageResizer()).WithRouter(new RoundRobinPool(ResizersCount)),
                "image-resizer");

            this.vacationsCreditRegistry = Context.ActorOf(VacationsCreditRegistry.GetProps, "vacations-credit-registry");

            this.employeeVacationsRegistryPropsFactory  = employeeVacationsRegistryPropsFactory;
            this.employeeSickLeavesRegistryPropsFactory = employeeSickLeavesRegistryPropsFactory;
        }
Esempio n. 6
0
        public OrganizationActor(
            IRefreshInformation refreshInformation,
            IEmployeeVacationsRegistryPropsFactory employeeVacationsRegistryPropsFactory,
            IEmployeeSickLeavesRegistryPropsFactory employeeSickLeavesRegistryPropsFactory,
            AppSettings appSettings)
        {
            this.employeesActor = Context.ActorOf(
                EmployeesActor.GetProps(employeeVacationsRegistryPropsFactory, employeeSickLeavesRegistryPropsFactory),
                "employees");
            this.departmentsActor = Context.ActorOf(
                DepartmentsActor.GetProps(this.employeesActor, appSettings.DepartmentFeatures),
                "departments");

            Context.System.Scheduler.ScheduleTellRepeatedly(
                TimeSpan.Zero,
                TimeSpan.FromMinutes(refreshInformation.IntervalInMinutes),
                this.Self,
                RefreshOrganizationInformation.Instance,
                this.Self);
        }
Esempio n. 7
0
 public static Props CreateProps(
     string employeeId,
     IEmployeeSickLeavesRegistryPropsFactory sickLeavesRegistryPropsFactory)
 {
     return(Props.Create(() => new EmployeeSickLeaveActor(employeeId, sickLeavesRegistryPropsFactory)));
 }