1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
using AutoMapper;
using Gestor.Infrastructure.Entities.Ferramentas;
using Gestor.Infrastructure.Helpers;
using Gestor.Infrastructure.Mappers;
using Gestor.Infrastructure.Repository.Generic;
using Gestor.Infrastructure.Repository.Interface;
using Gestor.Infrastructure.UnitOfWork.Generic;
using Gestor.Model.Domain.Ferramentas;
using Gestor.Model.Domain.Generic;
using Gestor.Model.Domain.Relatorios;
using Gestor.Model.Domain.Seguros;
using NHibernate;
using NHibernate.Connection;
using NHibernate.Impl;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Linq.Expressions;
using System.Runtime.CompilerServices;
namespace Gestor.Infrastructure.Repository.Logic
{
public class NotaFiscalRepository : GenericRepository<NotaFiscalDb>, INotaFiscalRepository, IGenericRepository<NotaFiscalDb>
{
private readonly GenericUnitOfWork _unitOfWork;
public NotaFiscalRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session)
{
this._unitOfWork = unitOfWork;
}
public void Delete(long id)
{
NotaFiscalDb notaFiscalDb = base.FindEntityById(id);
if (notaFiscalDb == null)
{
return;
}
base.Delete(notaFiscalDb);
}
public List<NotaFiscal> FindAll()
{
return this.Select("");
}
public List<NotaFiscal> FindByDatas(Filtros filtro)
{
string str = (filtro.Seguradoras == null || filtro.Seguradoras.Count == 0 ? "" : string.Concat(" AND IdSeguradora IN (", string.Join<long>(",",
from v in filtro.Seguradoras
select v), ")"));
return this.Select(string.Format(" AND Data >= '{0:yyyy-MM-dd}' AND Data <= '{1:yyyy-MM-dd}' {2}", filtro.Inicio, filtro.Fim, str));
}
public bool FindByExtrato(long id)
{
return base.All().FirstOrDefault<NotaFiscalDb>((NotaFiscalDb x) => x.IdExtrato == (long?)id) != null;
}
public NotaFiscal Merge(NotaFiscal notaFiscal)
{
NotaFiscalDb notaFiscalDb = ApplicationMapper.Mapper.Map<NotaFiscal, NotaFiscalDb>(notaFiscal);
base.Merge(notaFiscalDb);
return ApplicationMapper.Mapper.Map<NotaFiscalDb, NotaFiscal>(notaFiscalDb);
}
public NotaFiscal SaveOrUpdate(NotaFiscal notaFiscal)
{
NotaFiscalDb notaFiscalDb = ApplicationMapper.Mapper.Map<NotaFiscal, NotaFiscalDb>(notaFiscal);
this.SaveOrUpdate(notaFiscalDb);
return ApplicationMapper.Mapper.Map<NotaFiscalDb, NotaFiscal>(notaFiscalDb);
}
private List<NotaFiscal> Select(string condition)
{
List<NotaFiscal> notaFiscals;
object connection;
SessionFactoryImpl sessionFactory = this._unitOfWork.Session.SessionFactory as SessionFactoryImpl;
DataTable dataTable = new DataTable();
if (sessionFactory != null)
{
connection = sessionFactory.ConnectionProvider.GetConnection();
}
else
{
connection = null;
}
using (SqlConnection sqlConnection = connection as SqlConnection)
{
using (SqlCommand sqlCommand = sqlConnection.CreateCommand())
{
sqlCommand.CommandTimeout = 15000;
Auxiliar.CriarAuxiliar(sqlCommand, false);
sqlCommand.CommandText = string.Concat("SELECT * FROM NotaFiscal WHERE 1=1 ", condition, ";");
using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
{
sqlDataAdapter.SelectCommand = sqlCommand;
sqlDataAdapter.Fill(dataTable);
}
if (dataTable.Rows.Count != 0)
{
return (
from x in dataTable.AsEnumerable().ToList<DataRow>()
select new NotaFiscal()
{
Id = x.Field<long>("Id"),
ValorLiquido = x.Field<decimal>("ValorLiquido"),
Obs = x.Field<string>("obs"),
IdExtrato = x.Field<long?>("IdExtrato"),
Iss = x.Field<decimal>("Iss"),
ValorBruto = x.Field<decimal>("ValorBruto"),
Data = x.Field<DateTime?>("Data"),
Seguradora = Auxiliar.Seguradoras.FirstOrDefault<Seguradora>((Seguradora v) => v.Id == x.Field<long>("IdSeguradora")),
Estipulante = (!x.Field<long?>("IdEstipulante").HasValue ? null : Auxiliar.Estipulantes.FirstOrDefault<Estipulante>((Estipulante e) => e.Id == x.Field<long>("IdEstipulante"))),
Extrato = x.Field<string>("Extrato"),
Ir = (x.Field<object>("Ir") != null ? x.Field<decimal>("Ir") : decimal.Zero)
}).ToList<NotaFiscal>();
}
else
{
notaFiscals = new List<NotaFiscal>();
}
}
}
return notaFiscals;
}
}
}
|