public CounterpartyContract GetCounterpartyContract(IUnitOfWork uow, Order order, IErrorReporter errorReporter = null) { if (uow == null) { throw new ArgumentNullException(nameof(uow)); } if (order == null) { throw new ArgumentNullException(nameof(order)); } if (order.Client == null) { return(null); } var personType = order.Client.PersonType; var paymentType = order.PaymentType; var contractType = GetContractTypeForPaymentType(personType, paymentType); var organization = organizationProvider.GetOrganization(uow, order); if (organization == null) { return(null); } Counterparty counterpartyAlias = null; Organization organizationAlias = null; var result = uow.Session.QueryOver <CounterpartyContract>() .JoinAlias(co => co.Counterparty, () => counterpartyAlias) .JoinAlias(co => co.Organization, () => organizationAlias) .Where( co => ( counterpartyAlias.Id == order.Client.Id && !co.IsArchive && !co.OnCancellation && organizationAlias.Id == organization.Id && co.ContractType == contractType ) ) .OrderBy(x => x.IssueDate).Desc.List(); if (result.Count > 1 && errorReporter != null) { Exception ex = new ArgumentException("Query returned >1 CounterpartyContract"); errorReporter.SendErrorReport(new Exception[] { ex }, description: $"Ошибка в {nameof(CounterpartyContractRepository)}, GetCounterpartyContract() вернул больше 1 контракта"); } return(result.FirstOrDefault()); }
public SmsPaymentDTO CreateSmsPaymentDTO(IUnitOfWork uow, SmsPayment smsPayment, Order order, PaymentFrom paymentFrom) { var newSmsPaymentDTO = new SmsPaymentDTO { Recepient = smsPayment.Recepient.Name, RecepientId = smsPayment.Recepient.Id, PhoneNumber = smsPayment.PhoneNumber, PaymentStatus = SmsPaymentStatus.WaitingForPayment, OrderId = smsPayment.Order.Id, PaymentCreationDate = smsPayment.CreationDate, Amount = smsPayment.Amount, RecepientType = smsPayment.Recepient.PersonType, Items = GetCalculatedSmsPaymentItemDTOs(order.OrderItems), OrganizationId = _organizationProvider.GetOrganization(uow, order, paymentFrom, PaymentType.ByCard).Id }; return(newSmsPaymentDTO); }
public CounterpartyContract GetCounterpartyContract(IUnitOfWork uow, Order order) { if (uow == null) { throw new ArgumentNullException(nameof(uow)); } if (order == null) { throw new ArgumentNullException(nameof(order)); } if (order.Client == null) { return(null); } var personType = order.Client.PersonType; var paymentType = order.PaymentType; var contractType = GetContractTypeForPaymentType(personType, paymentType); var organization = organizationProvider.GetOrganization(uow, order); if (organization == null) { return(null); } Counterparty counterpartyAlias = null; Organization organizationAlias = null; var result = uow.Session.QueryOver <CounterpartyContract>() .JoinAlias(co => co.Counterparty, () => counterpartyAlias) .JoinAlias(co => co.Organization, () => organizationAlias) .Where( co => ( counterpartyAlias.Id == order.Client.Id && !co.IsArchive && !co.OnCancellation && organizationAlias.Id == organization.Id && co.ContractType == contractType ) ) .OrderBy(x => x.IssueDate).Desc.List(); return(result.FirstOrDefault()); }
public CounterpartyContract CreateContract(IUnitOfWork uow, Order order, DateTime?issueDate) { var contractType = counterpartyContractRepository.GetContractTypeForPaymentType(order.Client.PersonType, order.PaymentType); var org = organizationProvider.GetOrganization(uow, order); var contractSubNumber = CounterpartyContract.GenerateSubNumber(order.Client); CounterpartyContract contract = new CounterpartyContract { Counterparty = order.Client, ContractSubNumber = contractSubNumber, Organization = org, IsArchive = false, ContractType = contractType }; if (issueDate.HasValue) { contract.IssueDate = issueDate.Value; } return(contract); }