public static dynamic Guardar(IContextFactory factory, IOptions <ConnectionDB> connection, PresupuestoAnioData request) { long id = 0; using (Aldeas_Context db = factory.Create(connection)) { var data = from pro in db.TbPresupuestos where pro.idPrograma == request.idPrograma && pro.Anio == request.Anio select pro; if (data.Any()) { return(new { id = 0, status = "Error", code = 200, message = "ya existe" }); } else { var programa = from pro in db.TbProgramas where pro.id == request.idPrograma select pro; if (!programa.Any()) { return(new { id = 0, status = "Error", code = 200, message = "Error" }); } var nuevo = new DbPresupuestoAnio() { actual = true, fecha_creacion = DateTime.Now, fecha_actualizacion = DateTime.Now, per_capacitacion = programa.First().per_capacitacion, per_nomina = programa.First().per_capacitacion, idPrograma = request.idPrograma, numeroVersion = 1, Anio = request.Anio, }; db.TbPresupuestoAnio.Add(nuevo); db.SaveChanges(); id = nuevo.id; } } return(new { id = id, status = id == 0 ? "error" : "OK", code = 200 }); }
public static long Copiar(IContextFactory factory, IOptions <ConnectionDB> connection, long IdPresupuestoAnio) { long id = 0; using (Aldeas_Context db = factory.Create(connection)) { var data = from pro in db.TbPresupuestoAnio where pro.id == IdPresupuestoAnio && pro.actual == true select pro; if (data.Any()) { #region Copiamos 01 Presupuesto Anio int numVersion = 0; numVersion = data.First().numeroVersion + 1; var conteo = from pro in db.TbPresupuestoAnio where pro.idPrograma == data.First().idPrograma && pro.Anio == data.First().Anio select pro; numVersion = conteo.Count() + 1; var nuevo = new DbPresupuestoAnio() { actual = true, fecha_creacion = DateTime.Now, fecha_actualizacion = DateTime.Now, per_capacitacion = data.First().per_capacitacion, per_nomina = data.First().per_capacitacion, idPrograma = data.First().idPrograma, numeroVersion = numVersion, Anio = data.First().Anio, }; db.TbPresupuestoAnio.Add(nuevo); db.SaveChanges(); data.First().actual = false; data.First().fecha_actualizacion = DateTime.Now; db.SaveChanges(); id = nuevo.id; #endregion #region Copiamos 02 Presupuesto coberturas var dataCoberturas = from pro in db.TbPresupuestos where pro.idPresupuestoAnio == IdPresupuestoAnio select pro; List <DbPresupuestoPrograma> presupuestoProgramasCopia = new List <DbPresupuestoPrograma>(); if (dataCoberturas.Any()) { foreach (var copia in dataCoberturas.ToList()) { long idCoberturaCopia = 0; var coberturaCopia = new DbPresupuesto { Anio = copia.Anio, idPresupuestoAnio = id, idPrograma = copia.idPrograma, idFinanciador = copia.idFinanciador, IdProgramaCecos = copia.IdProgramaCecos, NombreContrato = copia.NombreContrato, CoberturaAnual = copia.CoberturaAnual, CoberturaMensual = copia.CoberturaMensual, CoberturaMensualEsperada = copia.CoberturaMensualEsperada, CoberturasCasas = copia.CoberturasCasas, fecha_actualizacion = DateTime.Now, fecha_creacion = DateTime.Now }; db.TbPresupuestos.Add(coberturaCopia); db.SaveChanges(); idCoberturaCopia = coberturaCopia.id; var dataItemsCobertura = from pro in db.TbPresupuestosProgramas where pro.idPresupuesto == copia.id select pro; if (dataItemsCobertura.Any()) { foreach (var copiaItem in dataItemsCobertura.ToList()) { var nuevoCopiaItem = new DbPresupuestoPrograma { idPresupuesto = idCoberturaCopia, idProgramaCecos = copiaItem.idProgramaCecos, idRubroPucs = copiaItem.idRubroPucs, esNomina = copiaItem.esNomina, esPPTO = copiaItem.esPPTO, NumeroIdentificacion = copiaItem.NumeroIdentificacion, Nombre = copiaItem.Nombre, Cargo = copiaItem.Cargo, Asignacion = copiaItem.Asignacion, NoCasa = copiaItem.NoCasa, NoKids = copiaItem.NoKids, NotaIngles = copiaItem.NotaIngles, DetalleGasto = copiaItem.DetalleGasto, Enero = copiaItem.Enero, Febrero = copiaItem.Febrero, Marzo = copiaItem.Marzo, Abril = copiaItem.Abril, Mayo = copiaItem.Mayo, Junio = copiaItem.Junio, Julio = copiaItem.Julio, Agosto = copiaItem.Agosto, Septiembre = copiaItem.Septiembre, Octubre = copiaItem.Octubre, Noviembre = copiaItem.Noviembre, Diciembre = copiaItem.Diciembre, Total = copiaItem.Total, TotalAnual = copiaItem.TotalAnual, fecha_actualizacion = DateTime.Now, fecha_creacion = DateTime.Now }; presupuestoProgramasCopia.Add(nuevoCopiaItem); } if (presupuestoProgramasCopia.Count > 0) { db.TbPresupuestosProgramas.AddRange(presupuestoProgramasCopia); db.SaveChanges(); presupuestoProgramasCopia = new List <DbPresupuestoPrograma>(); } } } } #endregion } else { return(0); } } return(id); }