public Task XmlDataMappingToTaskObject(ServiceRequest xmlData) { var taskObject = new Task { TaskId = xmlData.sc_task.sys_id, TaskNumber = xmlData.sc_task.number, ItemID = xmlData.sc_task.request_item.sys_id, ItemNumber = xmlData.sc_task.request_item.number, Attempts = 0, CreatedByID = xmlData.sc_task.sys_created_by, CreatedByFirstName = xmlData.sc_task.request.requested_for.first_name, CreatedByLastName = xmlData.sc_task.request.requested_for.last_name, CreatedByEmail = xmlData.sc_task.request.requested_for.email, CreatedOn = xmlData.sc_task.sys_created_on, BotStatus = "", CategoryItem = xmlData.sc_task.request_item.cat_item.category, CreatedForFirstName = xmlData.sc_task.request_item.u_requested_on_behalf_of.first_name, CreatedForLastName = xmlData.sc_task.request_item.u_requested_on_behalf_of.last_name, CreatedForEmail = xmlData.sc_task.request_item.u_requested_on_behalf_of.email, WindowsOrLinux = ExtractRepositoryWindowsOrLinux(xmlData.sc_task.u_variables), LinuxPassword = "", UserRequests = null }; return(taskObject); }
private void LoadTaskDataFromDataBase(ref Task taskInHand) { Task DataBaseInstance = TaskRepository.GetByID(taskInHand.TaskId); taskInHand.Attempts = DataBaseInstance.Attempts; taskInHand.BotStatus = DataBaseInstance.BotStatus; taskInHand.Timestamp = DataBaseInstance.Timestamp; }
private void Savetask(Task task) { DateTime CurrentDate = DateTime.UtcNow.Date; // make it date/time try { TaskRepository.Add( task.TaskId, task.TaskNumber, task.ItemID, task.ItemNumber, task.Attempts, task.CreatedByID, task.CreatedByFirstName, task.CreatedByLastName, task.CreatedByEmail, CurrentDate.ToString("dd/MM/yyyy"), task.BotStatus, task.CategoryItem); } catch (Exception) { throw; } }
//private void SendSuccessEmail(Task taskInHand) //{ // try // { // var client = new HttpClient(); // string uri = Configurations.MailerURl; // string emailBody = "Hello " + taskInHand.CreatedForFirstName + " " + taskInHand.CreatedForLastName + // " ,<br> <br> This Email Is Sent To Inform You That You Have Access To The Requested Repositories <br> <br>" + // "Regards, Svn Bot"; // { // var criteria = new ItworxMailerDto // from = "*****@*****.**", // subject = "Successful Svn Repository Access", // to = new List<string> { taskInHand.CreatedForEmail }, // cc = new List<string> { taskInHand.CreatedByEmail }, //request.RepositoryPath // body = emailBody, // mail_priority = "", // is_html = "yes" // }; // var json = JsonConvert.SerializeObject(criteria); // var queryString = new StringContent(json, Encoding.UTF8, "application/json"); // client.PostAsync(uri, queryString); // if (taskInHand.WindowsOrLinux == "Linux") // { // emailBody = "Hello " + taskInHand.CreatedForFirstName + " " + taskInHand.CreatedForLastName + // " ,<br> <br> Your Linux access password is " + taskInHand.LinuxPassword + // "<br><br>Regards, Svn Bot"; // criteria = new ItworxMailerDto // { // from = "*****@*****.**", // subject = "Successful Svn Repository Access", // to = new List<string> { taskInHand.CreatedForEmail }, // cc = new List<string> { }, // body = emailBody, // mail_priority = "", // is_html = "yes" // }; // json = JsonConvert.SerializeObject(criteria); // queryString = new StringContent(JsonConvert.SerializeObject(criteria), Encoding.UTF8, "application/json"); // client.PostAsync(uri, queryString); // } // } // catch (Exception) // { // throw; // } //} private void UpdateTaskStatus(Task taskInHand) { TaskRepository.UpdateStatus(taskInHand.BotStatus, taskInHand.TaskId); }
private void SendNotificationToSupportTeam(Task taskInHand) { emailScenario = EmailScenarioFactory.CreateEmailScenario(taskInHand); emailScenario.ExecuteScenario(taskInHand); taskInHand.BotStatus = Configurations.SUCCEEDED; }
public string GrantSvnAccess(ServiceRequest SnowDataObject) { _logger.LogInformation("Starting user request processing"); Task taskInHand = XmlDataMappingToTaskObject(SnowDataObject); List <UserRequest> UserRequests = XmlDataMappingToUserRequestObjects(SnowDataObject); taskInHand.UserRequests = UserRequests; if (TaskExists(taskInHand.TaskId)) { _logger.LogInformation("Task id already exists in DB"); LoadTaskDataFromDataBase(ref taskInHand); LoadUserRequestDataFromDataBase(ref UserRequests, taskInHand.TaskId); //taskInHand = loadtask(SnowDataObject.header.transaction_id); _logger.LogInformation("Loaded User Tasks from DB"); } else { _logger.LogInformation(string.Format("New Task with id {0}", taskInHand.TaskId)); _logger.LogInformation(string.Format("Setting bot status to {0}", Configurations.IN_PROGRESS)); taskInHand.BotStatus = Configurations.IN_PROGRESS; Savetask(taskInHand); SaveUserRequests(ref UserRequests); } if (taskInHand.BotStatus == Configurations.IN_PROGRESS) { _logger.LogInformation("Going through each user request"); foreach (var request in UserRequests) { _logger.LogInformation(string.Format("Processing user request with id {0}", request.ID)); if (request.UserStatus == Configurations.NEW) { string UserExistsResponse = UserExistsOnRepoAsync(request); if (UserExistsResponse == "true") { _logger.LogInformation(string.Format("User already exists on svn repo request ID;{0} ", request.ID)); _logger.LogInformation(string.Format("Updating user request to {0} on user request with id :{0}", Configurations.NEW, request.ID)); request.UserStatus = Configurations.ALREADY_EXISTS; UpdateUserRequestStatus(request); } else if (UserExistsResponse == "Error") { break; } else { _logger.LogInformation(string.Format("Attempting to add user to svn repo user request id :{0}", request.ID)); try { taskInHand.LinuxPassword = GiveUserAccessOnRepo(request); //needs better design request.UserStatus = Configurations.ADDED_TO_SVN; UpdateUserRequestStatus(request); } catch (Exception) { _logger.LogError(string.Format("Failed to add user to svn repo , user request id :{0}", request.ID)); } } } if (request.UserStatus == Configurations.ADDED_TO_SVN) { try { _logger.LogInformation(string.Format("Attempting to add user to excel sheet, user request with id {0}", request.ID)); AddToExcelSheet(request); request.UserStatus = Configurations.SUCCEEDED; UpdateUserRequestStatus(request); } catch { _logger.LogError("Failed adding user to excel sheet , user request with id :{0}"); } } } bool checkAllUsersAddedToSvn = true; int UserAlreadyExistsCount = 0; for (int i = 0; i < UserRequests.Count && i < Configurations.maximumAllowedRepos; i++) // issue here confirm { if (UserRequests[i].UserStatus == Configurations.ALREADY_EXISTS) { UserAlreadyExistsCount++; } if (UserRequests[i].UserStatus != Configurations.SUCCEEDED && UserRequests[i].UserStatus != Configurations.ALREADY_EXISTS) { checkAllUsersAddedToSvn = false; IncrementFailedAttempts(taskInHand.TaskId); //SendNotificationToSupportTeam(taskInHand); // not yet implemented break; } } if (UserAlreadyExistsCount == UserRequests.Count) { taskInHand.BotStatus = Configurations.ALREADY_EXISTS; } if (checkAllUsersAddedToSvn) { _logger.LogInformation(string.Format("User requests have been processed , setting task state to {0}", Configurations.SVN_PROCESSED)); //this is a bit hacky needs to be properly refactored. if (taskInHand.BotStatus != Configurations.ALREADY_EXISTS) { taskInHand.BotStatus = Configurations.SVN_PROCESSED; } } if (taskInHand.BotStatus == Configurations.SVN_PROCESSED || taskInHand.BotStatus == Configurations.ALREADY_EXISTS) { try { _logger.LogInformation(string.Format("Attempting to send success email to relevant users , task id :{0}", taskInHand.TaskId)); emailScenario = EmailScenarioFactory.CreateEmailScenario(taskInHand); emailScenario.ExecuteScenario(taskInHand); taskInHand.BotStatus = Configurations.SUCCEEDED; } catch (Exception) { _logger.LogError(string.Format("Attempting to send success email to relevant users , task id :{0}", taskInHand.TaskId)); IncrementFailedAttempts(taskInHand.TaskId); } } } if (taskInHand.BotStatus == Configurations.SUCCEEDED) { UpdateTaskStatus(taskInHand); return("200"); } else { SendNotificationToSupportTeam(taskInHand); UpdateTaskStatus(taskInHand); return("500"); } }
public Task GetByID(string TaskId) { OracleConnection Connection = new OracleConnection(configurations.BotConnectionString); Connection.Open(); OracleCommand Command = new OracleCommand(); Command.CommandText = "select * from SVN_REQ_TASKS where ID='" + TaskId + "'"; Command.Connection = Connection; OracleDataReader oraReader = Command.ExecuteReader(); var task = new Task(); while (oraReader.Read()) { if (!string.IsNullOrEmpty(oraReader["ID"].ToString())) { task.TaskId = oraReader["ID"].ToString(); } if (!string.IsNullOrEmpty(oraReader["TASK_NUMBER"].ToString())) { task.TaskNumber = oraReader["TASK_NUMBER"].ToString(); } if (!string.IsNullOrEmpty(oraReader["REQ_ITEM_ID"].ToString())) { task.ItemID = oraReader["REQ_ITEM_ID"].ToString(); } if (!string.IsNullOrEmpty(oraReader["REQ_ITEM_NUMBER"].ToString())) { task.ItemNumber = oraReader["REQ_ITEM_NUMBER"].ToString(); } if (!string.IsNullOrEmpty(oraReader["ATTEMPTS"].ToString())) { task.Attempts = int.Parse(oraReader["ATTEMPTS"].ToString()); } if (!string.IsNullOrEmpty(oraReader["CREATED_BY_ID"].ToString())) { task.CreatedByID = oraReader["CREATED_BY_ID"].ToString(); } if (!string.IsNullOrEmpty(oraReader["CREATED_BY_FIRSTNAME"].ToString())) { task.CreatedByFirstName = oraReader["CREATED_BY_FIRSTNAME"].ToString(); } if (!string.IsNullOrEmpty(oraReader["CREATED_BY_LASTNAME"].ToString())) { task.CreatedByLastName = oraReader["CREATED_BY_LASTNAME"].ToString(); } if (!string.IsNullOrEmpty(oraReader["CREATED_BY_EMAIL"].ToString())) { task.CreatedByEmail = oraReader["CREATED_BY_EMAIL"].ToString(); } if (!string.IsNullOrEmpty(oraReader["CREATED_TIMESTAMP"].ToString())) { task.Timestamp = oraReader["CREATED_TIMESTAMP"].ToString(); } if (!string.IsNullOrEmpty(oraReader["STATUS_IN_BOT"].ToString())) { task.BotStatus = oraReader["STATUS_IN_BOT"].ToString(); } if (!string.IsNullOrEmpty(oraReader["CATEGORY_ITEM"].ToString())) { task.CategoryItem = oraReader["CATEGORY_ITEM"].ToString(); } } oraReader.Close(); Connection.Close(); return(task); }