using Shared.DTOs; using Back.Data.Contracts; using Back.Data.Models; using Microsoft.EntityFrameworkCore; using Back.Common; namespace Back.Services { public class servTaxPayer { private readonly IAsyncRepository _repoSentTax; private readonly IAsyncRepository _repoPattern; private readonly IAsyncRepository _invoiceRepo; public servTaxPayer(IAsyncRepository repoSentTax, IAsyncRepository repoPattern , IAsyncRepository invoiceRepo) { _repoSentTax = repoSentTax; _repoPattern = repoPattern; _invoiceRepo = invoiceRepo; } public async Task ExistSuccessfulorSendorpendingInvoiceinCompanyID(int CompanyID) { return await _repoSentTax.Get(w => w.invoice.CompanyID == CompanyID && (w.SentStatus == SentStatus.Successful || w.SentStatus == SentStatus.Send || w.SentStatus == SentStatus.pending)).AnyAsync(); } public async Task ExistSuccessfulorSendorpendingInvoice(Invoice invoice) { return _repoSentTax.Get(w => w.InvoiceType == invoice.invoiceType && w.InvoiceID == invoice.ID && (w.SentStatus == SentStatus.Successful || w.SentStatus == SentStatus.Send || w.SentStatus == SentStatus.pending)).Any(); } public async Task CheckingTheCompanyKeyInformation(int CompanyID, string UniqeMemory, string PrivateKey, string EconomicCode) { return await _repoSentTax.Get(w => (w.invoice.company.UniqeMemory == UniqeMemory || w.invoice.company.PrivateKey == PrivateKey || w.invoice.company.EconomicCode == EconomicCode) && (w.SentStatus == SentStatus.Successful || w.SentStatus == SentStatus.Send || w.SentStatus == SentStatus.pending) && w.invoice.CompanyID != CompanyID).AnyAsync(); } public async Task>> GetPatterns() { return await _repoPattern.Get(w=>w.Status).Select(s => new IdName { ID = s.ID, Title = s.Title }).ToListAsync(); } public async Task GetInvoice(int CompanyID, int ID) { #region AdvancedSearch var invok = _invoiceRepo .Get(w => w.CompanyID == CompanyID && w.ID == ID && !w.IsDeleted); #endregion //----------------------- return await invok .Include(inc => inc.invoice) .Include(inc => inc.invoiceDetails) .ThenInclude(inc => inc.cODItem) .ThenInclude(inc => inc.CODUnit) .FirstOrDefaultAsync(); } } }