private SubagentInfo GetSubagentInfo(int сustomerId) { SubagentInfo subagentInfo = null; using (OTAFinanceDbDataContext db = new OTAFinanceDbDataContext()) { var subagent = db.UnitellerFiscalizationPaymentSubagentData.FirstOrDefault(x => x.SubagentId == сustomerId && !x.Deleted); if (subagent != null) { subagentInfo = new SubagentInfo { Id = subagent.Id, SubagentId = subagent.SubagentId, PrimaryEmail = subagent.PrimaryEmail, SecondaryEmail = subagent.SecondaryEmail, TertiaryEmail = subagent.TertiaryEmail, Phone = subagent.Phone, Inn = subagent.Inn, Name = subagent.Name, ContractNumber = subagent.ContractNumber, СontractDate = subagent.СontractDate, Description = subagent.Description, }; } } return(subagentInfo); }
private void UpdateUnitellerResultCheck(EFiscalizationPaymentState state, ErrorOperationResult operationResult, FiscalizationData fiscalizationData) { using (OTAFinanceDbDataContext db = new OTAFinanceDbDataContext()) { var unitellerResultCheck = db.UnitellerResultCheckByWidget.FirstOrDefault(x => string.Equals(x.UnitellerOrderPaymentId, fiscalizationData.OrderID)); if (unitellerResultCheck != null) { unitellerResultCheck.SubagentId = fiscalizationData.СustomerId == 0 ? (int?)null : fiscalizationData.СustomerId; unitellerResultCheck.PaymentAttemptId = string.IsNullOrWhiteSpace(fiscalizationData.PaymentAttemptID) ? null : fiscalizationData.PaymentAttemptID; unitellerResultCheck.Receipt = string.IsNullOrWhiteSpace(fiscalizationData.Receipt) ? null : fiscalizationData.Receipt; unitellerResultCheck.Message = string.IsNullOrWhiteSpace(fiscalizationData.ErrorMessage) ? null : fiscalizationData.ErrorMessage; unitellerResultCheck.ErrorCode = (short)operationResult; unitellerResultCheck.ProcessingStatus = (short)state; unitellerResultCheck.ProcessEndTime = fiscalizationData.ProcessEndTime; db.SubmitChanges(); } } }
public void UnitellerFiscalizationPayment() { logger.Info("UnitellerFiscalizationPayment - запущена процедура формирования данных по фискализации и их отправке"); //List<FiscalizationData> fiscalizationDataList = new List<FiscalizationData>(); List <ErrorOperationResult> ErrorOperationResultList = new List <ErrorOperationResult>(); try { using (OTAFinanceDbDataContext db = new OTAFinanceDbDataContext()) { // ОСТАВЛЕНО для тестирования //var payment = db.UnitellerOrderPayments.FirstOrDefault(x => x.UnitellerOrderPaymentId.Contains("5ee243234ec347")); //if (payment != null) //{ // { // // из поля comment надо получить ID субагента // int? subagentIdFromComment = null; // if (!string.IsNullOrWhiteSpace(payment.Comment)) // { // subagentIdFromComment = UnitellerFiscalizationHelper.GetPaymentId(payment.Comment); // } // var unitellerResultCheckByWidget = new UnitellerResultCheckByWidget // { // UnitellerShopPointId = payment.UnitellerShopPointId, // UnitellerOrderPaymentId = payment.UnitellerOrderPaymentId, // UnitellerPaidTotal = payment.PaidTotal, // UnitellerOwnerEmail = payment.OwnerEmail, // UnitellerSubagentId = (subagentIdFromComment != null && subagentIdFromComment.HasValue) ? subagentIdFromComment.Value : (int?)null, // ProcessingStatus = (short)EFiscalizationPaymentState.Unknown, // ErrorCode = 0 // }; // db.UnitellerResultCheckByWidget.InsertOnSubmit(unitellerResultCheckByWidget); // db.SubmitChanges(); // } //} // в этой части ничего не анализируем // у нас есть UnitellerResultCheckByWidget и набор данных //UnitellerShopPointId, //UnitellerOrderPaymentId //UnitellerPaidTotal //UnitellerOwnerEmail - email для отправки чека (мыло из виджета) //UnitellerSubagentId - ID субагента из виджета (поле комментарии) // вытаскиваем из БД нужную информацию, формируем данные, отправляем в очередь var payments = (from p in db.UnitellerResultCheckByWidget where p.ProcessingStatus == (short)EFiscalizationPaymentState.Unknown select p).ToList(); //List<UnitellerOrderPayment> payments = db.UnitellerOrderPayments // .Where(t => t.UnitellerOrderPaymentId == null && t.FiscalizationPaymentState != (short)EFiscalizationPaymentState.PrintFiscalCheck) // .OrderByDescending(t => t.CreateDate).ToList(); foreach (var pay in payments) { var data = db.UnitellerResultCheckByWidget.FirstOrDefault(x => x.Id == pay.Id); if (data != null) { var fiscalizationData = new FiscalizationData { ShopID = data.UnitellerShopPointId, OrderID = data.UnitellerOrderPaymentId, PaidTotal = (float)data.UnitellerPaidTotal, СustomerId = data.UnitellerSubagentId ?? 0, СustomerEmail = data.UnitellerOwnerEmail, }; // выставляем новый статус - обработка data.ProcessingStatus = (short)(EFiscalizationPaymentState.Processing); db.SubmitChanges(); ControllerNewTaskQueue.Add(fiscalizationData); } } } } catch (Exception ex) { logger.Error(ex, "UnitellerFiscalizationPaymentAdapter.UnitellerFiscalizationPayment Exception: "); } }