/// <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); }
/// <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); }
/// <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); }
/// <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(); } } }
/// <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); } }
/// <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); }
public StageEnum PushNextStage(string secret, Models.DecisionData data) { return(StageEnum.NewRequest); }