Ejemplo n.º 1
0
        public async Task ExecuteAsync()
        {
            Log.Information("Iniciando ejecución de tarea de integración => SendUserStaffTerminationNotificationTask");

            string url = _configuration.GetValue <string>("UrlServers:AssetsIT");

            Log.Information("Consulta de Jefes mediante HttpClient al API");

            var countNroEmployees = 0;

            StringBuilder result = new StringBuilder();

            result.AppendFormat(@"No se logró enviar ningún correo.");

            List <bool> listSendEmail = new List <bool>();

            using (HttpClient client = new HttpClient()) {
                List <CustomerUserData> chiefList = new List <CustomerUserData>();

                var responseChief = await client.GetAsync(url + "/api/v1/customeruser/chief-list?initialsNameBusiness=TGS");

                string apiResponseChief = await responseChief.Content.ReadAsStringAsync();

                chiefList = JsonConvert.DeserializeObject <List <CustomerUserData> >(apiResponseChief);

                foreach (CustomerUserData item in chiefList)
                {
                    var responseEmployee = await client.GetAsync(url + "/api/v1/customeruser/termination?nroDni=" + item.Dni);

                    string apiResponseEmployee = await responseEmployee.Content.ReadAsStringAsync();

                    var employeeList = JsonConvert.DeserializeObject <PaginatedItems <CustomerUserData> >(apiResponseEmployee);

                    if (employeeList.Count > 0)
                    {
                        countNroEmployees = countNroEmployees + 1;
                        var sendEmail = await _smtpService.SendUserStaffTerminationNotificationEmail(item, employeeList.Count);

                        listSendEmail.Add(sendEmail);
                    }
                }

                var countSendEmail = (from item in listSendEmail
                                      where item == true
                                      select item).Count();

                result.AppendFormat(countNroEmployees == countSendEmail ?
                                    "Se enviaron la siguiente cantidad de correos: " + countSendEmail + " de " + countNroEmployees + " correos." :
                                    "No se logró enviar todos los correos: " + countSendEmail + " de " + countNroEmployees + " correos.");

                var sendEmailAdmin = await _smtpService.SendEmailAdministratorSystem(result, "Microinformático - Estado de envío de correos a jefes por cese");

                Log.Information(sendEmailAdmin ? "Se envío el correo al administrador del correo." : "No se logró enviar el correo a administradores.");

                Log.Information("Secuencia de integracion finalizada.");
            }
        }
Ejemplo n.º 2
0
        public async Task ExecuteAsync()
        {
            Log.Information("Iniciando ejecucion de tarea de integracion => CreateTerminatedUserStaffAssetsReturnTicketsTask");

            string url = _configuration.GetValue <string>("UrlServers:AssetsIT");

            Log.Information("Consulta de Usuarios sin renovación de contrato mediante HttpClient al API");

            using (HttpClient client = new HttpClient()) {
                StringBuilder result = new StringBuilder();

                List <TicketCreateResponse> ticketCreateList = new List <TicketCreateResponse>();

                List <CustomerUserData> employeeList = new List <CustomerUserData>();
                var responseEmployee = await client.GetAsync(url + "/api/v1/customeruser/norenew?initialsNameBusiness=TGS");

                string apiResponseEmployee = await responseEmployee.Content.ReadAsStringAsync();

                employeeList = JsonConvert.DeserializeObject <List <CustomerUserData> >(apiResponseEmployee);

                if (employeeList.Count() > 0)
                {
                    foreach (CustomerUserData user in employeeList)
                    {
                        var responseAssets = await client.GetAsync(url + "/api/v1/asset?ownerId=" + user.Dni);

                        string apiResponseAsset = await responseAssets.Content.ReadAsStringAsync();

                        List <Asset> assetList = JsonConvert.DeserializeObject <List <Asset> >(apiResponseAsset);

                        var valuesPostNoRenew = new Dictionary <string, string>
                        {
                            { "customerId", user.CustomerId },
                            { "assetId", assetList.FirstOrDefault().Id }
                        };
                        var contentValuesPostRenew = new FormUrlEncodedContent(valuesPostNoRenew);

                        var ticketCreateReponse = await client.PostAsync(url + "/api/v1/ticket/norenew", contentValuesPostRenew);

                        string apiResponseTicketCreate = await ticketCreateReponse.Content.ReadAsStringAsync();

                        TicketCreateResponse ticketCreate = JsonConvert.DeserializeObject <TicketCreateResponse>(apiResponseTicketCreate);

                        if (ticketCreate.TicketID != null)
                        {
                            ticketCreateList.Add(new TicketCreateResponse {
                                ArticleID = ticketCreate.ArticleID, TicketID = ticketCreate.TicketID, TicketNumber = ticketCreate.TicketNumber
                            });
                            if (assetList.Count() > 1)
                            {
                                var itemAssetList = from p in assetList
                                                    where p.Id != assetList.FirstOrDefault().Id
                                                    select p;
                                foreach (Asset itemAsset in itemAssetList)
                                {
                                    var valuesPutNoRenew = new Dictionary <string, string>
                                    {
                                        { "ticketId", ticketCreate.TicketID },
                                        { "customerId", user.CustomerId },
                                        { "street", user.Street },
                                        { "assetId", itemAsset.Id }
                                    };
                                    var contentValuesPutNoRenew = new FormUrlEncodedContent(valuesPutNoRenew);

                                    var ticketUpdateReponse = await client.PutAsync(url + "/api/v1/ticket/norenew", contentValuesPutNoRenew);

                                    string apiResponseTicketUpdate = await ticketUpdateReponse.Content.ReadAsStringAsync();

                                    TicketUpdateResponse ticketUpdate = JsonConvert.DeserializeObject <TicketUpdateResponse>(apiResponseTicketUpdate);
                                    if (ticketUpdate != null)
                                    {
                                        ticketCreateList.Add(new TicketCreateResponse {
                                            ArticleID = ticketUpdate.ArticleID, TicketID = ticketUpdate.TicketID, TicketNumber = ticketUpdate.TicketNumber
                                        });
                                    }
                                }
                            }
                        }
                    }

                    if (ticketCreateList != null)
                    {
                        result.AppendFormat(
                            @"<html><body>Lista de tickets creados por cese para el recojo de equipos:
                            <table class='table table-bordered'><tr><th scope='col'>Ticket ID</th><th scope='col'>Nro. Ticket</th><th scope='col'>Artículo ID</th></tr>"
                            );
                        foreach (TicketCreateResponse item in ticketCreateList)
                        {
                            result.AppendFormat(
                                @"<tr><td> {0}</td>
                                <tr><td> {1}</td>
                                <tr><td> {2}</td></tr></body></html>",
                                item.TicketID, item.TicketNumber, item.ArticleID);
                        }
                        result.AppendFormat(@"</tbody></table>");

                        var sendEmailAdmin = await _smtpService.SendEmailAdministratorSystem(result, "Microinformático - Estado de envío de correos a jefes por cese");

                        Log.Information(sendEmailAdmin ? "Se envío el correo al administrador del correo." : "No se logró enviar el correo a administradores.");
                        Log.Information("Secuencia de integracion finalizada.");
                    }
                    else
                    {
                        result.AppendFormat("No se generó ningún ticket.");

                        var sendEmailAdmin = await _smtpService.SendEmailAdministratorSystem(result, "Microinformático - Estado de generación de ticket por cese");

                        Log.Information(sendEmailAdmin ? "Se envío el correo al administrador del correo." : "No se logró enviar el correo a administradores.");

                        Log.Information("Secuencia de integración finalizada.");
                    }
                }
                else
                {
                    Log.Information("Secuencia de integración finalizada. No hay colaboradores por cesados");
                }
            }
        }