Пример #1
0
        /// <summary>
        /// Отобразить ПДН.
        /// </summary>
        /// <param name="account1CCode">Номер договора 1С</param>
        /// <param name="accountDate">Дата договора</param>
        /// <param name="client1CCode">Код клиента 1С</param>
        /// <param name="canEdit">Разрешено редактирование</param>
        /// <returns>Представление содержащее ПДН</returns>
        public async Task <IViewComponentResult> InvokeAsync(string account1CCode, DateTime accountDate, string client1CCode, bool canEdit)
        {
            PDNEditViewComponentView pdnEditComponentView = new PDNEditViewComponentView {
                Disabled = !canEdit
            };

            CancellationToken cancellationToken = CancellationToken.None;

            if (!string.IsNullOrEmpty(account1CCode))
            {
                try {
                    PDNInfoList pdnInfoList = await _ServiceServicePDN.GetSavedPDNAsync(account1CCode, CancellationToken.None);

                    if (pdnInfoList == default && !string.IsNullOrEmpty(client1CCode) && accountDate != default)
                    {
                        pdnInfoList = await _ServiceServicePDN.CalculatePDNAsync(account1CCode, accountDate, client1CCode, cancellationToken);

                        if (pdnInfoList.ReportDate >= accountDate.AddDays(-SOAPNBCH.NBCHAnketaExpiredDay))
                        {
                            await _ServiceServicePDN.SavePDNAsync(pdnInfoList, cancellationToken);

                            pdnEditComponentView.Message = @"Данные обновлены";
                        }
                        else
                        {
                            pdnEditComponentView.Message = @"Для расчета ПДН, требуется обновить анкету НБКИ";
                        }
                    }
                    else
                    {
                        pdnEditComponentView.Message = @"У договора нет рассчитанного ПДН и нет данных для нового расчета";
                    }

                    pdnEditComponentView.PDNCards    = pdnInfoList?.PDNCards ?? new PDNCard[0];
                    pdnEditComponentView.PDNNonCards = pdnInfoList?.PDNNonCards ?? new PDNNonCard[0];
                }
                catch (PDNAnketaNotFoundException) {
                    pdnEditComponentView.Message = "Необходимо запросить анкету НБКИ";
                }
            }
Пример #2
0
        /// <summary>
        /// Отобразить ПДН.
        /// </summary>
        /// <param name="account1CCode">Номер договора 1С</param>
        /// <param name="accountDate">Дата договора</param>
        /// <param name="client1CCode">Код клиента 1С</param>
        /// <param name="canEdit">Можно редактировать</param>
        /// <returns>Представление содержащее ПДН</returns>
        public async Task <IViewComponentResult> InvokeAsync(string account1CCode, DateTime accountDate, string client1CCode,
                                                             bool canEdit)
        {
            CancellationToken cancellationToken = CancellationToken.None;

            PDNDataView pdnDataView = new PDNDataView {
                CanEdit = canEdit
            };

            if (!string.IsNullOrEmpty(account1CCode) && !string.IsNullOrEmpty(client1CCode))
            {
                try {
                    pdnDataView.PDNInfoList = await _ServiceServicePDN.GetSavedPDNAsync(account1CCode, cancellationToken);

                    if (pdnDataView.PDNInfoList == default)
                    {
                        PDNInfoList pdnInfoList =
                            await _ServiceServicePDN.CalculatePDNAsync(account1CCode, accountDate, client1CCode, cancellationToken);

                        if (pdnInfoList.ReportDate >= accountDate.AddDays(-SOAPNBCH.NBCHAnketaExpiredDay))
                        {
                            await _ServiceServicePDN.SavePDNAsync(pdnInfoList, cancellationToken);

                            pdnDataView.PDNInfoList = pdnInfoList;
                            pdnDataView.Message     = @"Данные обновлены";
                        }
                        else
                        {
                            pdnDataView.Message = @"Для расчета ПДН, требуется обновить анкету НБКИ";
                        }
                    }
                    ;
                }
                catch (PDNAnketaNotFoundException) {
                    pdnDataView.Message = "Необходимо запросить анкету НБКИ";
                }
            }
Пример #3
0
        public async Task <IActionResult> Index(string[] file)
        {
            CancellationToken cancellationToken = CancellationToken.None;
            List <string>     message           = new List <string>();

            ModelState.Clear();

            foreach (string account1C in file)
            {
                IndexModel credit = await NBCHRequest.GetDataFrom1CAsync(_Service1C, account1C, _Secret1Cs, "Дальний восток", _Configuration);

                if (!String.IsNullOrEmpty(credit.Account1CCode) && !String.IsNullOrEmpty(credit.Client1CCode))
                {
                    try {
                        PDNInfoList pdnInfoListN = await _ServiceServicePDN.GetSavedPDNAsync(account1C, cancellationToken);

                        if (pdnInfoListN == default)
                        {
                            PDNInfoList pdnInfoList = await _ServiceServicePDN.CalculatePDNAsync(credit.Account1CCode, credit.Account1CDate, credit.Client1CCode, cancellationToken);

                            if (pdnInfoList.ReportDate >= credit.Account1CDate.AddDays(-SOAPNBCH.NBCHAnketaExpiredDay))
                            {
                                await _ServiceServicePDN.SavePDNAsync(pdnInfoList, cancellationToken);

                                message.Add($"Договор {credit.Account1CCode}, данные обновлены");
                            }
                            else
                            {
                                message.Add($"Договор {credit.Account1CCode}, для расчета ПДН, требуется обновить анкету НБКИ");
                            }
                        }
                        ;
                    }
                    catch (FaultException ex) {
                        message.Add($"Договор {credit.Account1CCode}, {ex.Message}");
                    }
                }
Пример #4
0
        public async Task <IActionResult> Edit(DateTime reportDate, string account1CCode, PDNCard[] pdnCards,
                                               PDNNonCard[] pdnNonCards, int creditHistoryID, bool pdnAccept)
        {
            pdnCards.AsParallel().ForAll(i => i.Errors    = i.CheckPDNError(reportDate));
            pdnNonCards.AsParallel().ForAll(i => i.Errors = i.CheckPDNError(reportDate));

            PDNInfoList pdnInfoList = new PDNInfoList {
                PDNCards        = pdnCards,
                PDNNonCards     = pdnNonCards,
                Manual          = true,
                Account1CID     = account1CCode,
                ReportDate      = reportDate,
                CreditHistoryID = creditHistoryID,
                PDNAccept       = pdnAccept
            };

            try { await _ServiceServicePDN.SavePDNAsync(pdnInfoList, CancellationToken.None); }
            catch (Exception exception) {
                _Logger.LogError(
                    exception,
                    "Не удалось сохранить данные ПДН. Пользователь: {login},  данные: {pdnInfoList}, ошибка: {exceptionMessage}",
                    HelperASP.Login(User), pdnInfoList, exception.Message);
            }


            PDNEditEdit pdnEditIndex = new PDNEditEdit {
                Account1CCode = account1CCode,
                ReportDate    = reportDate
            };

            if (pdnAccept)
            {
                return(RedirectToAction("Index"));
            }

            return(View(pdnEditIndex));
        }
Пример #5
0
 public async Task SavePDNAsync(PDNInfoList pdnInfoList) =>
 await ExecuteWithTryCatchAsync <WCFServiceRegistrar>(() => ServicePDN.SavePDNAsync(pdnInfoList),
                                                      new LogShortMessage("Ошибка вызова метода. Метод: {methodName} pdnInfoList: {pdnInfoList}.",
                                                                          "SavePDNAsync", pdnInfoList));
Пример #6
0
 public void SavePDN(PDNInfoList pdnInfoList) =>
 ExecuteWithTryCatch <WCFServiceRegistrar>(() => ServicePDN.SavePDN(pdnInfoList),
                                           new LogShortMessage("Ошибка вызова метода. Метод: {methodName} pdnInfoList: {pdnInfoList}.",
                                                               "SavePDN", pdnInfoList));
Пример #7
0
 /// <summary>
 /// Сохранить ПДН асинхронно.
 /// </summary>
 /// <param name="pdnInfoList">Данные ПДН</param>
 public async Task SavePDNAsync(PDNInfoList pdnInfoList) =>
 await Channel.SavePDNAsync(pdnInfoList);
Пример #8
0
 /// <summary>
 /// Сохранить ПДН.
 /// </summary>
 /// <param name="pdnInfoList">Данные ПДН</param>
 public void SavePDN(PDNInfoList pdnInfoList) => Channel.SavePDN(pdnInfoList);