Example #1
0
        public RootActivityBulk CreateBulk(RootActivity activities, int requestnumber)
        {
            RootActivityBulk resultbulkactivity = new RootActivityBulk();
            string           bulkactivity       = JsonConvert.SerializeObject(activities, Formatting.None);

            ResponseOFSC result = UtilWebRequest.SendWayAsync("rest/ofscCore/v1/activities/custom-actions/bulkUpdate", enumMethod.POST, bulkactivity, Authorization);

            result.Content = result.Content.Replace("\n", string.Empty);

            // REQUEST OK
            if (result.statusCode >= 200 && result.statusCode < 300)
            {
                attemps           += 0;
                resultbulkactivity = JsonConvert.DeserializeObject <RootActivityBulk>(result.Content);
                // Horario ; status Code http ;Request ; Response ;
                Program.Logger(string.Format("{0};{1};{2};", DateTime.Now, result.statusCode, result.Content), TypeLog.OK_REST_ACTIVITY, requestnumber);

                // Analyzing object
                AnalyzingBulk(resultbulkactivity, activities);
            }

            // REQUEST NETWORK CONNECTION BEING DOWN
            else if (result.statusCode == 0 && attemps < 3)
            {
                attemps += 1;
                Program.Logger(string.Format("|{0}|statusCode:{1}|Content:{2}|ErrorMessage:{3}|activities{4}|", DateTime.Now, result.statusCode, result.Content, result.ErrorMessage, bulkactivity), TypeLog.NSHTTPURLResponse);
                Thread.Sleep(5000);
                CreateBulk(activities, requestnumber);
            }


            return(resultbulkactivity);
        }
Example #2
0
        private void AnalyzingBulk(RootActivityBulk resultbulkactivity, RootActivity activities)
        {
            foreach (var item in resultbulkactivity.results)
            {
                try
                {
                    LayoutOutput layoutOutput = new LayoutOutput();
                    layoutOutput.activityId = item.activityKeys.activityId;
                    layoutOutput.apptNumber = item.activityKeys.apptNumber;
                    var tmpactivity = activities.activities.FirstOrDefault(x => x.apptNumber == item.activityKeys.apptNumber && x.customerNumber == item.activityKeys.customerNumber);
                    layoutOutput.resourceId = tmpactivity.resourceId;

                    if (string.IsNullOrEmpty(tmpactivity.date))
                    {
                        tmpactivity.date = tmpactivity.date;
                    }
                    else
                    {
                        DateTime tmpdateTime;
                        DateTime.TryParse(tmpactivity.date, out tmpdateTime);

                        if (tmpdateTime.Year != 1)
                        {
                            tmpactivity.date = tmpdateTime.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture);
                        }
                    }
                    layoutOutput.date     = tmpactivity.date;
                    layoutOutput.timeSlot = tmpactivity.timeSlot;
                    string horarioAgendado = string.IsNullOrEmpty(layoutOutput.timeSlot) ? string.Empty : Program.DictionaryTimeSlot[tmpactivity.timeSlot];
                    layoutOutput.horarioAgendado = horarioAgendado;
                    string resultInventory = string.Empty;

                    foreach (Item itemInventory in tmpactivity.inventories.items)
                    {
                        if (item.errors != null)
                        {
                            if (item.errors.Count > 0 && (item.errors[0].operation == "updateInventories" || item.errors[0].operation == "updateProperties"))
                            {
                                string[] tmp2 = item.errors[0].errorDetail.Split(new string[] { "Value:" }, StringSplitOptions.None);
                                string   tmp  = tmp2[1];
                                tmp = tmp.Replace("'", string.Empty);
                                tmp = tmp.Trim();

                                bool flag = false;
                                if (item.errors[0].operation == "updateInventories" && item.activityKeys.activityId > 0)
                                {
                                    resultInventory += itemInventory.inventoryType + ":400|";
                                    Program.Logger(string.Format("|{0}|* Error en la Orden de Servicio:{1}| Detalle: Inventario inexistente {2}|", DateTime.Now, layoutOutput.apptNumber, itemInventory.inventoryType), TypeLog.BAD_IO_ACTIVITY);
                                }
                                else if (item.errors[0].operation == "updateInventories" && item.activityKeys.activityId <= 0)
                                {
                                    flag = tmp == (itemInventory.inventoryType);
                                    if (flag)
                                    {
                                        resultInventory += itemInventory.inventoryType + ":400|";
                                        Program.Logger(string.Format("|{0}|* Error en la Orden de Servicio:{1}| Detalle: Inventario inexistente {2}|", DateTime.Now, layoutOutput.apptNumber, itemInventory.inventoryType), TypeLog.BAD_IO_ACTIVITY);
                                    }
                                    else
                                    {
                                        resultInventory += itemInventory.inventoryType + ":200|";
                                    }
                                }

                                else if (item.errors[0].operation == "updateProperties")
                                {
                                    flag = itemInventory.inventoryType == tmp;


                                    if (flag)
                                    {
                                        resultInventory += itemInventory.inventoryType + ":200|";
                                    }
                                    else
                                    {
                                        resultInventory += itemInventory.inventoryType + ":400|";
                                        Program.Logger(string.Format("|{0}|* Error en la Orden de Servicio:{1}| Detalle: Inventario inexistente {2}|", DateTime.Now, layoutOutput.apptNumber, itemInventory.inventoryType), TypeLog.BAD_IO_ACTIVITY);
                                    }
                                }
                            }
                        }
                        else
                        {
                            resultInventory += itemInventory.inventoryType + ":200|";
                        }
                    }

                    if (item.operationsPerformed == null)
                    {
                        layoutOutput.result = "operationsFailed " + item.errors[0].errorDetail;
                        Program.Logger(string.Format("|{0}|* Error en la Orden de Servicio:{1} | Detalle: {2}|", DateTime.Now, layoutOutput.apptNumber, layoutOutput.result), TypeLog.BAD_IO_ACTIVITY);
                    }
                    else
                    {
                        layoutOutput.result = item.operationsPerformed.FirstOrDefault();
                    }

                    // layoutOutput.result = item.operationsPerformed == null ? "operationsFailed " + item.errors[0].errorDetail : item.operationsPerformed.FirstOrDefault();
                    layoutOutput.result      = layoutOutput.result + "|" + resultInventory;
                    layoutOutput.description = "Appointment id = " + layoutOutput.activityId;
                    if (layoutOutput.activityId > 0)
                    {
                        string lineCSV = string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};{10};",
                                                       layoutOutput.activityId,
                                                       layoutOutput.apptNumber,
                                                       layoutOutput.typeCommand,
                                                       layoutOutput.resourceId,
                                                       layoutOutput.date,
                                                       layoutOutput.timeSlot,
                                                       layoutOutput.horarioAgendado,
                                                       layoutOutput.result,
                                                       layoutOutput.typeMessage,
                                                       layoutOutput.cod,
                                                       layoutOutput.description);

                        Program.LoggerCSV(lineCSV);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }