private async Task ConfigMappersContabilidad(MapperConfig mConfig) { //ObservableApuntesList //mConfig // .AddConstructor<ObservableApuntesList>(x => // { // var store = new MapperStore(); // DapperMapper<Apunte> mapper = (DapperMapper<Apunte>)store.GetMapper(typeof(Apunte)); // List<Apunte> lista = mapper.Map(x, "Id", false); //Obtiene lista de apuntes con sobrecarga de Map() // return new ObservableApuntesList(lista.First().Asiento, lista); //crea objeto a partir de esa lista // }) // .MapOnlyConstructor<ObservableApuntesList>() // .EndConfig<ObservableApuntesList>(); //Apunte mConfig //.AddNestedProperty<Apunte>(true, "_Asiento") .AddMemberCreator <Apunte>("_Asiento", x => { Asiento asiento = AsientoRepo.AsientoMapperGetFromDictionary((int)x.Asiento); return(asiento); }) .AddMemberCreator <Apunte>("_DebeHaber", x => (DebitCredit)x.DebeHaber) .AddIgnoreProperty <Apunte, decimal>(x => x.ImporteAlDebe) .AddIgnoreProperty <Apunte, decimal>(x => x.ImporteAlHaber) .AddIgnoreProperty <Apunte, bool>(x => x.IsBeingModifiedFromView) .AddIgnoreProperty <Apunte, bool>(x => x.HasBeenModifiedFromView) .AddIgnoreProperty <Apunte, List <string> >(x => x.DirtyMembers) .AddPrefixes <Apunte>(new string[] { "apu" }) .EndConfig <Apunte>(); mConfig .AddConstructor <ApunteDLO>(x => new ApunteDLO(x.Id, x.IdOwnerComunidad, x.OrdenEnAsiento, x.Asiento, x.Concepto, x.DebeHaber, x.Importe, x.IdCuenta, x.Punteo, x.Factura)) .MapOnlyConstructor <ApunteDLO>() .EndConfig <ApunteDLO>(); //Asiento mConfig .AddConstructor <Asiento>(x => { var store = new MapperStore(); DapperMapper <Apunte> mapper = (DapperMapper <Apunte>)store.GetMapper(typeof(Apunte)); Apunte[] apuntes = mapper.Map(x, "Id", false); //Obtiene lista de apuntes con sobrecarga de Map() return(new Asiento(x.Id, x.IdOwnerComunidad, x.IdOwnerEjercicio, x.Codigo, this.ACData, x.FechaValor, apuntes)); }) //.AddNestedProperty<Asiento, ObservableApuntesList>(false, x => x.Apuntes) .AddIgnoreProperty <Asiento>("Apuntes") .AddIgnoreProperty <Asiento>("Item") .AddPrefixes <Asiento>(new string[] { "asi" }) .EndConfig <Asiento>(); //Gasto-Pago-GastosPagosBase mConfig .AddPrefixes <GastosPagosBase.sImporteCuenta>(new string[] { "acreedora_", "deudora_" }) .EndConfig <GastosPagosBase.sImporteCuenta>(); mConfig .AddConstructor <GastosPagosBase>(x => new GastosPagosBase(x.Id, x.IdOwnerComunidad, x.IdProveedor, x.IdOwnerFactura, x.Fecha)) .AddMemberCreator <GastosPagosBase>("_CuentasAcreedoras", x => { MapperStore store = new MapperStore(); DapperMapper <GastosPagosBase.sImporteCuenta> mapper = (DapperMapper <GastosPagosBase.sImporteCuenta>)store.GetMapper(typeof(GastosPagosBase.sImporteCuenta)); IEnumerable <dynamic> distinctAcreedX = mapper.GetDistinctDapperResult(x, false); distinctAcreedX = distinctAcreedX.Select(dyn => { IDictionary <string, object> dict = dyn as IDictionary <string, object>; var result = new System.Dynamic.ExpandoObject() as IDictionary <string, object>; foreach (KeyValuePair <string, object> kvp in dict) { if (kvp.Key.Contains("acreedora_")) { result.Add(kvp.Key, kvp.Value); } } return(result); }); return(mapper.Map <List <GastosPagosBase.sImporteCuenta> >(distinctAcreedX, "Id", false)); }) .AddMemberCreator <GastosPagosBase>("_CuentasDeudoras", x => { MapperStore store = new MapperStore(); DapperMapper <GastosPagosBase.sImporteCuenta> mapper = (DapperMapper <GastosPagosBase.sImporteCuenta>)store.GetMapper(typeof(GastosPagosBase.sImporteCuenta)); IEnumerable <dynamic> distinctDeudX = mapper.GetDistinctDapperResult(x, false); distinctDeudX = distinctDeudX.Select(dyn => { IDictionary <string, object> dict = dyn as IDictionary <string, object>; var result = new System.Dynamic.ExpandoObject() as IDictionary <string, object>; foreach (KeyValuePair <string, object> kvp in dict) { if (kvp.Key.Contains("deudora_")) { result.Add(kvp.Key, kvp.Value); } } return(result); }); return(mapper.Map <List <GastosPagosBase.sImporteCuenta> >(distinctDeudX, "Id", false)); }) //.AddIgnoreProperty<GastosPagosBase>("_CuentasAcreedoras") //.AddIgnoreProperty<GastosPagosBase>("_CuentasDeudoras") //.AddIgnoreProperty<GastosPagosBase, System.Collections.ObjectModel.ReadOnlyCollection<GastosPagosBase.sImporteCuenta>>( // x => x.CuentasAcreedoras) //.AddIgnoreProperty<GastosPagosBase, System.Collections.ObjectModel.ReadOnlyCollection<GastosPagosBase.sImporteCuenta>>( // x => x.CuentasDeudoras) .EndConfig <GastosPagosBase>(); mConfig .AddConstructor <Gasto>(x => new Gasto(x.Id, x.IdOwnerComunidad, x.IdProveedor, x.IdOwnerFactura, x.Fecha)) .EndConfig <Gasto>(); mConfig .AddConstructor <Pago>(x => new Pago(x.Id, x.IdOwnerComunidad, x.IdProveedor, x.IdOwnerFactura, x.Fecha)) .EndConfig <Pago>(); //GastosPagosList-ReadOnly mConfig .AddConstructor <GastosPagosList <Gasto> >(x => { MapperStore store = new MapperStore(); DapperMapper <Gasto> mapper = (DapperMapper <Gasto>)store.GetMapper(typeof(Gasto)); List <Gasto> lista = mapper.Map <List <Gasto> >(x, "Id", false); return(new GastosPagosList <Gasto>(lista)); }) .MapOnlyConstructor <GastosPagosList <Gasto> >() .EndConfig <GastosPagosList <Gasto> >(); mConfig .AddConstructor <GastosPagosList <Pago> >(x => { MapperStore store = new MapperStore(); DapperMapper <Pago> mapper = (DapperMapper <Pago>)store.GetMapper(typeof(Pago)); List <Pago> lista = mapper.Map <List <Pago> >(x, "Id", false); return(new GastosPagosList <Pago>(lista)); }) .MapOnlyConstructor <GastosPagosList <Pago> >() .EndConfig <GastosPagosList <Pago> >(); mConfig .AddConstructor <ReadOnlyGastosPagosList <Gasto> >(x => { MapperStore store = new MapperStore(); DapperMapper <Gasto> mapper = (DapperMapper <Gasto>)store.GetMapper(typeof(Gasto)); List <Gasto> lista = mapper.Map <List <Gasto> >(x, "Id", false); return(new ReadOnlyGastosPagosList <Gasto>(lista)); }) .MapOnlyConstructor <ReadOnlyGastosPagosList <Gasto> >() .EndConfig <ReadOnlyGastosPagosList <Gasto> >(); mConfig .AddConstructor <ReadOnlyGastosPagosList <Pago> >(x => { MapperStore store = new MapperStore(); DapperMapper <Pago> mapper = (DapperMapper <Pago>)store.GetMapper(typeof(Pago)); List <Pago> lista = mapper.Map <List <Pago> >(x, "Id", false); return(new ReadOnlyGastosPagosList <Pago>(lista)); }) .MapOnlyConstructor <ReadOnlyGastosPagosList <Pago> >() .EndConfig <ReadOnlyGastosPagosList <Pago> >(); //Factura mConfig .AddNestedProperty <Factura>(false, "_GastosFra") .AddIgnoreProperty <Factura, ReadOnlyGastosPagosList <Gasto> >(x => x.GastosFra) .AddNestedProperty <Factura>(false, "_PagosFra") .AddIgnoreProperty <Factura, ReadOnlyGastosPagosList <Pago> >(x => x.PagosFra) .AddMemberCreator <Factura, int?>(x => x.IdOwnerProveedor, x => x.IdProveedor) .AddMemberCreator <Factura, TipoPagoFacturas>(x => x.TipoPago, x => (TipoPagoFacturas)x.TipoPago) .AddIgnoreProperty <Factura, decimal>(x => x.TotalImpuestos) .EndConfig <Factura>(); mConfig .AddConstructor <FacturaDLO>(x => new FacturaDLO(x.Id, x.IdProveedor, x.IdOwnerComunidad, x.NFactura, x.Fecha, x.Concepto, x.Total, x.Pendiente, (TipoPagoFacturas)x.TipoPago)) .MapOnlyConstructor <FacturaDLO>() .EndConfig <FacturaDLO>(); //CuentaMayor mConfig .AddConstructor <CuentaMayor>(x => new CuentaMayor(x.Codigo, x.Id, x.IdOwnerComunidad, x.IdOwnerEjercicio, x.Nombre)) .MapOnlyConstructor <CuentaMayor>() .EndConfig <CuentaMayor>(); mConfig .AddConstructor <CuentaMayorDLO>(x => new CuentaMayorDLO(int.Parse(x.Codigo), x.Id, x.IdOwnerComunidad, x.IdOwnerEjercicio, x.Nombre)) .MapOnlyConstructor <CuentaMayorDLO>() .EndConfig <CuentaMayorDLO>(); //Proveedor mConfig .AddConstructor <Proveedor>(x => new Proveedor(x.Id, x.IdPersona, x.NIF, x.Nombre, true)) .AddNestedProperty <Proveedor>(false, "_CuentaContableGasto") .AddNestedProperty <Proveedor>(false, "_CuentaContablePago") .AddNestedProperty <Proveedor>(false, "_CuentaContableProveedor") .AddMemberCreator <Proveedor, TipoPagoFacturas>(x => x.DefaultTipoPagoFacturas, x => (TipoPagoFacturas)x.DefaultTipoPagoFacturas) .EndConfig <Proveedor>(); mConfig .AddConstructor <ProveedorDLO>(x => new ProveedorDLO(x.Id, x.Nombre, x.NIF, string.Concat(x.TipoVia, " ", x.Direccion), x.CuentaBancaria, x.Telefono, x.Email, x.RazonSocial, x.CuentaContableGasto, x.CuentaContablePago, x.CuentaContableProveedor)) .MapOnlyConstructor <ProveedorDLO>() .EndConfig <ProveedorDLO>(); //Cobros-EntACta-iIngresoPropietario mConfig .AddInterfaceToObjectCondition <iIngresoPropietario>(x => { var dict = x as IDictionary <string, object>; return(dict.ContainsKey("IdOwnerCuota")); }, typeof(Cobro)) .AddInterfaceToObjectCondition <iIngresoPropietario>(x => { var dict = x as IDictionary <string, object>; return(dict.ContainsKey("IdOwnerFinca")); }, typeof(EntACta)) .EndConfig <iIngresoPropietario>(); mConfig .AddConstructor <Cobro>(x => new Cobro( x.Id, x.IdOwnerRecibo, x.IdOwnerCuota, x.Importe, x.Fecha, x.IdOwnerPersona, x.Total, (SituacionReciboCobroEntaCta)x.Situacion)) .AddPrefixes <Cobro>(new string[1] { "cobro" }) .MapOnlyConstructor <Cobro>() .EndConfig <Cobro>(); mConfig .AddConstructor <EntACta>(x => new EntACta( x.Id, x.IdOwnerRecibo, x.IdOwnerFinca, x.Importe, x.Fecha, x.IdOwnerPersona, (SituacionReciboCobroEntaCta)x.Situacion)) .AddPrefixes <EntACtaDict>(new string[1] { "eacta" }) .MapOnlyConstructor <Cobro>() .EndConfig <EntACta>(); //Cobros/EntACta - List/Dict mConfig .AddConstructor <CobrosList>(x => { MapperStore store = new MapperStore(); DapperMapper <Cobro> mapper = (DapperMapper <Cobro>)store.GetMapper(typeof(Cobro)); List <Cobro> lista = mapper.Map <List <Cobro> >(x, "Id", false); return(new CobrosList(lista)); }) .MapOnlyConstructor <CobrosList>() .EndConfig <EntACtaList>(); mConfig .AddConstructor <CobrosDict>(x => { MapperStore store = new MapperStore(); DapperMapper <Cobro> mapper = (DapperMapper <Cobro>)store.GetMapper(typeof(Cobro)); IEnumerable <Cobro> lista = mapper.Map <IEnumerable <Cobro> >(x); return(new CobrosDict(lista.ToDictionary(c => (int)c.Id, c => c))); }) .MapOnlyConstructor <CobrosDict>() .EndConfig <CobrosDict>(); mConfig .AddConstructor <EntACtaList>(x => { MapperStore store = new MapperStore(); DapperMapper <EntACta> mapper = (DapperMapper <EntACta>)store.GetMapper(typeof(EntACta)); List <EntACta> lista = mapper.Map <List <EntACta> >(x, "Id", false); return(new EntACtaList(lista)); }) .MapOnlyConstructor <EntACtaList>() .EndConfig <EntACtaList>(); mConfig .AddConstructor <EntACtaDict>(x => { MapperStore store = new MapperStore(); DapperMapper <EntACta> mapper = (DapperMapper <EntACta>)store.GetMapper(typeof(EntACta)); IEnumerable <EntACta> lista = mapper.Map <IEnumerable <EntACta> >(x); return(new EntACtaDict(lista.ToDictionary(c => (int)c.Id, c => c))); }) .MapOnlyConstructor <EntACtaDict>() .EndConfig <EntACtaDict>(); //IngresoDevuelto mConfig .AddConstructor <IngresoDevuelto>(x => { MapperStore store = new MapperStore(); DapperMapper <iIngresoPropietario> mapper = (DapperMapper <iIngresoPropietario>)store.GetMapper(typeof(iIngresoPropietario)); var ingreso = mapper.Map(x); return(new IngresoDevuelto(x.Id, x.IdOwnerDevolucion, x.Fecha, ingreso, x.Total, x.Importe, x.Gastos)); }) .MapOnlyConstructor <IngresoDevuelto>() .EndConfig <IngresoDevuelto>(); //Devolucion-List mConfig .AddConstructor <Devolucion>(x => { MapperStore store = new MapperStore(); DapperMapper <IngresoDevuelto> mapper = (DapperMapper <IngresoDevuelto>)store.GetMapper(typeof(IngresoDevuelto)); List <IngresoDevuelto> lista = mapper.Map <List <IngresoDevuelto> >(x); return(new Devolucion(x.Id, x.IdOwnerComunidad, x.Fecha, lista)); }) .MapOnlyConstructor <Devolucion>() .EndConfig <Devolucion>(); mConfig .AddConstructor <DevolucionesList>(x => { MapperStore store = new MapperStore(); DapperMapper <Devolucion> mapper = (DapperMapper <Devolucion>)store.GetMapper(typeof(Devolucion)); IEnumerable <Devolucion> lista = mapper.Map <IEnumerable <Devolucion> >(x); return(new DevolucionesList(lista.ToList())); }) .MapOnlyConstructor <DevolucionesList>() .EndConfig <DevolucionesList>(); }