예제 #1
0
        /// <summary>
        /// Процесс согласования в режиме предоставления доступа
        /// </summary>
        /// <param name="secret"></param>
        /// <returns></returns>
        StageEnum PushNextStageAccessMode(string secret, Models.DecisionData data)
        {
            StageEnum ret = StageEnum.NewRequest;

            using (Models.PhonesDataContext model = new Models.PhonesDataContext())
            {
                StageEnum stage = GetCurrentStage(secret);
                switch (stage)
                {
                case StageEnum.NewRequest:
                    ///----Отправляем согласование Айтишникам
                    ret = StageEnum.SendITRequest;
                    break;

                case StageEnum.SendITRequest:
                    ///---Ждем подтверждения
                    ret = StageEnum.WaitITAccept;
                    break;

                case StageEnum.WaitITAccept:
                    break;
                }
            }
            return(ret);
        }
예제 #2
0
 /// <summary>
 /// Подтверждает перечень сервисов как ОТКЛОНЕННЫЕ для ИНВЕНТАРИЗАЦИИ
 /// </summary>
 /// <param name="secret"></param>
 /// <param name="data"></param>
 void DeclineServicesInvent(string secret, Models.DecisionData data)
 {
     using (Models.PhonesDataContext model = new Models.PhonesDataContext())
     {
         foreach (var service in model.RequestTickets.Where(x => x.secret == secret))
         {
             service.RequestStage = StageEnum.Declined.ToString();
             model.SubmitChanges();
         }
     }
 }
        /// <summary>
        /// Отправляю заявку дальше по маршруту
        /// </summary>
        /// <param name="secret"></param>
        /// <returns></returns>
        public StageEnum PushNextStage(string secret, Models.DecisionData data = null)
        {
            StageEnum nextStage = service.PushNextStage(secret, data);

            ///---Обновляю статус заявки в базе
            using (Models.PhonesDataContext model = new Models.PhonesDataContext())
            {
                foreach (var rt in model.RequestTickets.Where(x => x.secret == secret))
                {
                    rt.RequestStage = nextStage.ToString();
                }
                model.SubmitChanges();
            }
            return(nextStage);
        }
예제 #4
0
        /// <summary>
        /// Перемещаем сервис по дереву согласования
        /// </summary>
        public StageEnum PushNextStage(string secret, Models.DecisionData data)
        {
            StageEnum ret          = StageEnum.NewRequest;
            bool      learningMode = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["learningMode"].ToString());

            ///--- Определяю модель в зависимости от режима работы
            if (learningMode)
            {
                ret = PushNextStageLearningMode(secret, data);
            }
            else
            {
                ret = PushNextStageAccessMode(secret, data);
            }
            return(ret);
        }
예제 #5
0
 /// <summary>
 /// Подтверждает перечень сервисов как ПОДТВЕРЖДЕННЫЕ для ИНВЕНТАРИЗАЦИИ
 /// </summary>
 /// <param name="secret"></param>
 /// <param name="data"></param>
 void AcceptServicesInvent(string secret, Models.DecisionData data)
 {
     using (Models.PhonesDataContext model = new Models.PhonesDataContext())
     {
         foreach (var service in model.RequestTickets.Where(x => x.secret == secret))
         {
             service.RequestStage = StageEnum.Accepted.ToString();
             if (model.AssignedServices
                 .Count(x => x.ServiceId == service.serviceId && x.UTNLogin == service.UTNLogin) > 0)
             {
                 var assignedService = model.AssignedServices
                                       .First(x => x.ServiceId == service.serviceId && x.UTNLogin == service.UTNLogin);
                 assignedService.TechnicalResponsibleApproved   = true;
                 assignedService.TechnicalResponsibleApprovedBy = data.Acceptor.UTNLogin;
             }
             service.RequestStage = StageEnum.Accepted.ToString();
             model.SubmitChanges();
         }
     }
 }
예제 #6
0
        /// <summary>
        /// Проверяет почтовый ящик на предмет ПОДТВЕРЖДЕНИЯ/ОТКЛОНЕНИЯ доступа к приложениям
        /// </summary>
        public static void RunMailHandler()
        {
            string server                 = System.Configuration.ConfigurationManager.AppSettings["smtpServer"];
            string approveserviceUser     = System.Configuration.ConfigurationManager.AppSettings["approveserviceUser"];
            string approveservicePassword = System.Configuration.ConfigurationManager.AppSettings["approveservicePassword"];
            string declineserviceUser     = System.Configuration.ConfigurationManager.AppSettings["declineserviceUser"];
            string declineservicePassword = System.Configuration.ConfigurationManager.AppSettings["declineservicePassword"];

            Lib.ApplicationHelper helper = new ApplicationHelper();

            ///---Сначала обрабатываю отказы
            List <Models.ClamedServices> declinedServices = GetClaimResult(server, declineserviceUser, declineservicePassword);

            foreach (var declinedService in declinedServices)
            {
                ///---Сохраняю запрос
                Models.DecisionData data = new Models.DecisionData()
                {
                    Decision = Models.DecisionEnum.Decline,
                    Acceptor = declinedService.user
                };
                var wfManager = new StandardKernel(new AcceptingWorkflowBindingModule(declinedService.secret)).Get <AcceptingWorkflowManager>();
                wfManager.PushNextStage(declinedService.secret, data);
            }

            ///---Потом обрабатываю подтверждения
            List <Models.ClamedServices> acceptedServices = GetClaimResult(server, approveserviceUser, approveservicePassword);

            foreach (var acceptedService in acceptedServices)
            {
                ///---Сохраняю запрос
                Models.DecisionData data = new Models.DecisionData()
                {
                    Decision = Models.DecisionEnum.Accept,
                    Acceptor = acceptedService.user
                };
                var wfManager = new StandardKernel(new AcceptingWorkflowBindingModule(acceptedService.secret)).Get <AcceptingWorkflowManager>();
                wfManager.PushNextStage(acceptedService.secret, data);
            }
        }
예제 #7
0
        /// <summary>
        /// Процесс согласования в режиме инвентаризации
        /// </summary>
        /// <param name="secret"></param>
        /// <returns></returns>
        StageEnum PushNextStageLearningMode(string secret, Models.DecisionData data)
        {
            StageEnum ret = StageEnum.NewRequest;

            using (Models.PhonesDataContext model = new Models.PhonesDataContext())
            {
                StageEnum stage = GetCurrentStage(secret);
                switch (stage)
                {
                case StageEnum.NewRequest:

                    ///---Определяем список ИТ ответственных и отправляем им письма на подтверждение
                    List <Models.AuthUser>  responsers = GetITResponsers(secret);
                    List <IBaseUserService> services   = GetServices(secret);
                    Models.User             whom       = GetRequesterUser(secret);
                    MailHelper.SendClaimRequestToGroup(services, responsers, whom);
                    ret = StageEnum.WaitITAccept;

                    break;

                case StageEnum.WaitITAccept:

                    ///---Пришло подтверждение -- фиксируем в базе, отправляем уведомление пользователю
                    if (data.Decision == Models.DecisionEnum.Accept)
                    {
                        AcceptServicesInvent(secret, data);
                        ret = StageEnum.Accepted;
                    }

                    ///---Отказ инвентаризации фиксируем в БД
                    if (data.Decision == Models.DecisionEnum.Decline)
                    {
                        DeclineServicesInvent(secret, data);
                        ret = StageEnum.Declined;
                    }
                    break;
                }
            }
            return(ret);
        }
예제 #8
0
 public StageEnum PushNextStage(string secret, Models.DecisionData data)
 {
     return(StageEnum.NewRequest);
 }