TFS_ANTIGUO/SInCathay/ULA.Cathay.CreditoModel.DAL/Credito/FuncionarioDAL.cs

118 lines
4.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Ultimus.Utilitarios;
using ULA.Cathay.CreditoModel.Credito;
using System.Data.Entity;
using Ultimus.Interfaces;
using System.Data.Entity.Validation;
namespace ULA.Cathay.CreditoModel.DAL.Credito
{
public class FuncionarioJSON : Funcionario
{
public string CodigoRespuesta { get; set; }
public string DescripcionRespuesta { get; set; }
}
public class FuncionarioDAL
{
private UltimusLogs logs = new UltimusLogs("FuncionarioDAL");
/// <summary>
/// Obtiene la información de la tabla Global.Funcionario para la solicitud específica.
/// </summary>
/// <param name="IdSolicitud">Número de la solicitud</param>
/// <returns></returns>
public List<Funcionario> Obtener(int IdSolicitud, int? Incidente)
{
List<Funcionario> _model = null;
try
{
using (CreditoContex db = new CreditoContex())
{
_model = db.Funcionario
.Where(c => c.IdSolicitud == IdSolicitud && ((Incidente == null) || (c.Incident == Incidente)))
.Include(c => c.Procesos)
.Include(c => c.RolFuncional)
.Include(c => c.EstructuraOrgChart)
.Include(c => c.EstructuraOrgChart.RolFuncionalEstructuraOrgChart)
//.Include("EstructuraOrgChart.RolFuncionalEstructuraOrgChart.RolFuncional")
.ToList();
}
}
catch (Exception ex)
{
logs.Error(ex);
}
return _model;
}
/// <summary>
/// Registra(insertando o actualizando) en la tabla Global.Funcionario la información enviada por parámetro.
/// </summary>
/// <param name="model">Objeto de la clase Funcionario cargado con la informacion a ser registrada en la BD</param>
/// <returns>Objeto de la clase FuncionarioJSON actualizado con la informacion de los indices y data que se registró en la BD</returns>
public FuncionarioJSON InsertarActualizar(Funcionario model)
{
Funcionario _modeloActual = null;
FuncionarioJSON ValorRetorno = new FuncionarioJSON();
try
{
using (CreditoContex Conn = new CreditoContex())
{
_modeloActual = Conn.Funcionario.Where(q => q.IdSolicitud == model.IdSolicitud).FirstOrDefault();
if (model.IdProceso == 0) { model.IdProceso = new ProcesosDAL().ObtenerIdProceso(model.Procesos); }
model.Procesos = null;
model.Solicitud = null;
model.EstructuraOrgChart = null;
model.RolFuncional = null;
if (_modeloActual != null)
{
Conn.Entry(_modeloActual).State = System.Data.Entity.EntityState.Detached;
Conn.Funcionario.Attach(_modeloActual);
Conn.Entry(_modeloActual).State = System.Data.Entity.EntityState.Deleted;
model.IdRolFuncional = model.IdRolFuncional > 0 ? model.IdRolFuncional : _modeloActual.IdRolFuncional;
model.IdEstructuraOrgChart = model.IdEstructuraOrgChart > 0 ? model.IdEstructuraOrgChart : _modeloActual.IdEstructuraOrgChart;
model.UserId = !string.IsNullOrEmpty(model.UserId) ? model.UserId : _modeloActual.UserId;
model.FullName = !string.IsNullOrEmpty(model.FullName) ? model.FullName : _modeloActual.FullName;
model.Email = !string.IsNullOrEmpty(model.Email) ? model.Email : _modeloActual.Email;
}
Conn.Funcionario.Add(model);
Conn.SaveChanges();
}
ValorRetorno.CopyValueProperties(model);
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.EXITOSO.ToString();
}
catch (DbEntityValidationException exs)
{
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
logs.Error(exs);
}
catch (Exception ex)
{
ValorRetorno.CodigoRespuesta = TipoCodigoRespuesta.ERROR.ToString();
ValorRetorno.DescripcionRespuesta = ex.Message;
logs.Error(ex);
}
finally
{
_modeloActual = null;
}
return ValorRetorno;
}
}
}