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
132
133
134
135
136
|
using AutoMapper;
using Gestor.Infrastructure.Entities.Financeiro;
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.Financeiro;
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.Runtime.CompilerServices;
namespace Gestor.Infrastructure.Repository.Logic
{
public class SaldoRepository : GenericRepository<SaldoDb>, ISaldoRepository, IGenericRepository<SaldoDb>
{
private readonly GenericUnitOfWork _unitOfWork;
public SaldoRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session)
{
this._unitOfWork = unitOfWork;
}
public Saldo BuscarAberto(long id)
{
string str = string.Format(" AND idconta = {0} AND dtfim IS NULL", id);
return this.Select(str).FirstOrDefault<Saldo>();
}
public List<Saldo> BuscarPorConta(long id)
{
return this.Select(string.Format(" AND idconta = {0}", id));
}
public Saldo BuscarPorData(DateTime inicio, long id)
{
string str = string.Format(" AND idconta = {0}", id);
return (
from x in this.Select(str)
orderby x.DataInicio descending
select x).FirstOrDefault<Saldo>((Saldo x) => {
DateTime? dataInicio = x.DataInicio;
DateTime dateTime = inicio;
if (!dataInicio.HasValue)
{
return false;
}
return dataInicio.GetValueOrDefault() <= dateTime;
});
}
public Saldo BuscarPorMenorData(long id)
{
string str = string.Format(" AND idconta = {0}", id);
return (
from x in this.Select(str)
orderby x.DataInicio
select x).FirstOrDefault<Saldo>();
}
public void Delete(long id)
{
SaldoDb saldoDb = base.FindEntityById(id);
if (saldoDb == null)
{
return;
}
base.Delete(saldoDb);
}
public Saldo FindById(long id)
{
SaldoDb saldoDb = base.FindEntityById(id);
return ApplicationMapper.Mapper.Map<SaldoDb, Saldo>(saldoDb);
}
public Saldo Merge(Saldo saldo)
{
SaldoDb saldoDb = ApplicationMapper.Mapper.Map<Saldo, SaldoDb>(saldo);
base.Merge(saldoDb);
return ApplicationMapper.Mapper.Map<SaldoDb, Saldo>(saldoDb);
}
public Saldo SaveOrUpdate(Saldo saldo)
{
SaldoDb saldoDb = ApplicationMapper.Mapper.Map<Saldo, SaldoDb>(saldo);
this.SaveOrUpdate(saldoDb);
return ApplicationMapper.Mapper.Map<SaldoDb, Saldo>(saldoDb);
}
private List<Saldo> Select(string condition)
{
List<Saldo> saldos;
object connection;
DataTable dataTable = new DataTable();
SessionFactoryImpl sessionFactory = this._unitOfWork.Session.SessionFactory as SessionFactoryImpl;
if (sessionFactory != null)
{
connection = sessionFactory.ConnectionProvider.GetConnection();
}
else
{
connection = null;
}
using (SqlConnection sqlConnection = connection as SqlConnection)
{
using (SqlCommand sqlCommand = sqlConnection.CreateCommand())
{
AuxiliarFinanceiro.Criar(sqlCommand);
sqlCommand.CommandText = string.Concat("SELECT * FROM saldo WHERE 1=1 ", condition);
using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
{
sqlDataAdapter.SelectCommand = sqlCommand;
sqlDataAdapter.Fill(dataTable);
}
if (dataTable.Rows.Count != 0)
{
return CustomMap.MapSaldo(dataTable);
}
else
{
saldos = new List<Saldo>();
}
}
}
return saldos;
}
}
}
|