Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        private void LoadTaskDataFromDataBase(ref Task taskInHand)
        {
            Task DataBaseInstance = TaskRepository.GetByID(taskInHand.TaskId);

            taskInHand.Attempts  = DataBaseInstance.Attempts;
            taskInHand.BotStatus = DataBaseInstance.BotStatus;
            taskInHand.Timestamp = DataBaseInstance.Timestamp;
        }
Exemplo n.º 3
0
        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; }
        }
Exemplo n.º 4
0
        //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);
        }
Exemplo n.º 5
0
 private void SendNotificationToSupportTeam(Task taskInHand)
 {
     emailScenario = EmailScenarioFactory.CreateEmailScenario(taskInHand);
     emailScenario.ExecuteScenario(taskInHand);
     taskInHand.BotStatus = Configurations.SUCCEEDED;
 }
Exemplo n.º 6
0
        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);
        }