コード例 #1
0
 public static Props GetProps(
     IEmployeeVacationsRegistryPropsFactory employeeVacationsRegistryPropsFactory,
     IEmployeeSickLeavesRegistryPropsFactory employeeSickLeavesRegistryPropsFactory)
 {
     return(Props.Create(() => new EmployeesActor(
                             employeeVacationsRegistryPropsFactory,
                             employeeSickLeavesRegistryPropsFactory)));
 }
コード例 #2
0
        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);
        }
コード例 #3
0
 public static Props GetProps(
     EmployeeStoredInformation employeeStoredInformation,
     IActorRef imageResizer,
     IActorRef vacationsCreditRegistry,
     IEmployeeVacationsRegistryPropsFactory employeeVacationsRegistryPropsFactory,
     IEmployeeSickLeavesRegistryPropsFactory employeeSickLeavesRegistryPropsFactory
     ) => Props.Create(() => new EmployeeActor(
                           employeeStoredInformation,
                           imageResizer,
                           vacationsCreditRegistry,
                           employeeVacationsRegistryPropsFactory,
                           employeeSickLeavesRegistryPropsFactory));
コード例 #4
0
 public static Props CreateProps(
     string employeeId,
     IActorRef employeeFeed,
     IActorRef vacationsCreditRegistry,
     IEmployeeVacationsRegistryPropsFactory vacationsRegistryPropsFactory)
 {
     return(Props.Create(() => new EmployeeVacationsActor(
                             employeeId,
                             employeeFeed,
                             vacationsCreditRegistry,
                             vacationsRegistryPropsFactory)
                         ));
 }
コード例 #5
0
        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;
        }
コード例 #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);
        }
コード例 #7
0
        public EmployeeVacationsActor(
            string employeeId,
            IActorRef employeeFeed,
            IActorRef vacationsCreditRegistry,
            IEmployeeVacationsRegistryPropsFactory vacationsRegistryPropsFactory
            )
        {
            this.employeeId              = employeeId;
            this.employeeFeed            = employeeFeed;
            this.vacationsCreditRegistry = vacationsCreditRegistry;

            this.calendarEventsApprovalsChecker = Context.ActorSelection(CalendarEventsApprovalsCheckerActorPath);

            var persistenceSupervisorFactory = new PersistenceSupervisorFactory();

            var vacationsRegistryProps = vacationsRegistryPropsFactory.CreateProps(employeeId);

            this.vacationsRegistry = Context.ActorOf(
                persistenceSupervisorFactory.Get(vacationsRegistryProps),
                "vacations-registry");

            Context.System.EventStream.Subscribe <CalendarEventChanged>(this.Self);
            Context.System.EventStream.Subscribe <CalendarEventRecoverComplete>(this.Self);
        }