/// <summary> /// The update erection sequence. /// </summary> /// <param name="factory"> /// The factory. /// </param> /// <param name="project"> /// The project. /// </param> /// <param name="erectionSequenceList"> /// The erection sequence list. /// </param> /// <returns> /// The System.Boolean. /// </returns> public bool UpdateErectionSequence( string factory, string project, List<KeyValuePair<int, int>> erectionSequenceList ) { project = project.PadLeft( 12 ); List<string> statementList = new List<string>( erectionSequenceList.Count ); using( var database = new ImpactDatabase() ) { var allIdArray = erectionSequenceList.Select( x => (object)x.Key ).ToArray(); ImpactQuery query = new ImpactQuery { Select = { ImpModelPlanning.ElementId }, From = { ImpModelPlanning.As( "T1" ) }, Where = { ImpModelPlanning.Factory.Equal( factory ), ImpModelPlanning.Project.Equal( project ), ImpModelPlanning.ElementId.In( allIdArray ), }, }; string statement = query.ToString(); var existingPlanningList = database.GetAll( statement, column => column[0].Cast<int>() ); var groupedByInsertUpdate = erectionSequenceList.GroupBy( x => existingPlanningList.Remove( x.Key ) ).ToList(); var updateList = groupedByInsertUpdate.Find( x => x.Key ); var insertList = groupedByInsertUpdate.Find( x => !x.Key ); if( null != updateList ) { foreach( var item in updateList ) { var update = new ImpactUpdate( ImpModelPlanning.Instance ) { Columns = { { ImpModelPlanning.ErectionSequenceNo, item.Value } }, Where = { ImpModelPlanning.Factory.Equal( factory ), ImpModelPlanning.Project.Equal( project ), ImpModelPlanning.ElementId.Equal( item.Key ), } }; statementList.Add( update.ToString() ); } } if( null != insertList ) { foreach( var item in insertList ) { var insert = new ImpactInsert( ImpModelPlanning.Instance ) { Columns = { { ImpModelPlanning.Factory, factory }, { ImpModelPlanning.Project, project }, { ImpModelPlanning.ElementId, item.Key }, { ImpModelPlanning.ErectionSequenceNo, item.Value }, }, }; statementList.Add( insert.ToString() ); } } int result = database.ExecuteNonQuery( statementList.ToArray() ); return result > 0; } }
public static List<CatalogoExpensas.Pagos> registrarPagosAutomaticos(DateTime periodo, List<Pagos> pagos) { try { admEntities db = new admEntities(); //Si alguien paga por automatico, queda totalmente al dia. Sumar recargos cobrados de meses anteriores o si pago en 2 vto List<expensas> expensas = new List<expensas>(); List<Recargo> gastosExclusivos = new List<Recargo>(); List<recargos> recargos = new List<recargos>(); foreach (var p in pagos) { var exp = db.expensas.Where(x => x.nro_referencia == p.nroReferencia).OrderByDescending(x => x.fecha).First(); var uni = new unidad(); uni.dir_edificio = exp.dir_edificio; uni.id_unidad = exp.id_unidad; p.Edificio = uni.dir_edificio; p.Unidad = uni.id_unidad; p.Periodo = exp.fecha.Month + "/" + exp.fecha.Year; var expensasMismaUnidad = db.expensas.Where(x => x.dir_edificio == uni.dir_edificio && x.id_unidad == uni.id_unidad && x.pagado == 0).ToList(); var exclusivosMismaUnidad = CatalogoGastosExclusivos.getAllRecargos(uni); expensas.AddRange(expensasMismaUnidad); gastosExclusivos.AddRange(exclusivosMismaUnidad); } var expGrouped = expensas.GroupBy(x => new { x.dir_edificio, x.id_unidad }) .Select(x => new expensas { dir_edificio = x.Key.dir_edificio, id_unidad = x.Key.id_unidad }) .Cast<expensas>() .ToList(); foreach (expensas e in expensas) { e.pagado = 1; db.Entry(e).State = System.Data.EntityState.Modified; } foreach (expensas e in expGrouped) { recargos r = new recargos(); var uni = new unidad(); uni.dir_edificio = e.dir_edificio; uni.id_unidad = e.id_unidad; r.dir_edificio = e.dir_edificio; r.periodo = DateTime.Parse("1/" + DateTime.Now.Month + "/" + DateTime.Now.Year); var detalles = CatalogoDeudores.getDetalleDeudaUnidad(uni); r.importe = detalles.Sum(x => x.Recargo); var rExistente = recargos.Where(x => x.dir_edificio == r.dir_edificio && x.periodo == r.periodo).SingleOrDefault(); if (rExistente != null) rExistente.importe += r.importe; else recargos.Add(r); } db.SaveChanges(); foreach (var excl in gastosExclusivos) { switch (excl.Tipo) { case "Exclusivos": CatalogoGastosExclusivos.pagarRecargoExclusivo(excl.Edificio, excl.Unidad, excl.Concepto, excl.Fecha); break; case "Legales": CatalogoGastosExclusivos.pagarRecargoLegales(excl.Edificio, excl.Unidad, excl.Concepto, excl.Fecha); break; case "Varios": CatalogoGastosExclusivos.pagarRecargoVarios(excl.Edificio, excl.Unidad, excl.Concepto, excl.Fecha); break; } } CatalogoRecargos.addRecargos(recargos); return pagos; } catch (Exception e) { Logger.Log.write(e.InnerException == null ? e.Message : e.InnerException.Message); var str = ""; str = e.InnerException?.InnerException?.Message; Logger.Log.write("Otro error: " + str); throw e; } }