diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias.sln b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias.sln new file mode 100644 index 0000000..6dc5445 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.13.35919.96 d17.13 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Procesamiento_de_transacciones_bancarias", "Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias.csproj", "{1D6E76A8-4868-456C-96A1-BF186D857D78}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1D6E76A8-4868-456C-96A1-BF186D857D78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D6E76A8-4868-456C-96A1-BF186D857D78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D6E76A8-4868-456C-96A1-BF186D857D78}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D6E76A8-4868-456C-96A1-BF186D857D78}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4ED08311-A3F1-4DA7-9510-95812FFA996A} + EndGlobalSection +EndGlobal diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias.csproj b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias.csproj new file mode 100644 index 0000000..206b89a --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias.csproj @@ -0,0 +1,10 @@ + + + + Exe + net8.0 + enable + enable + + + diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/Program.cs b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/Program.cs new file mode 100644 index 0000000..28f166d --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/Program.cs @@ -0,0 +1,95 @@ +//--Iniciamos el aplicativo preguntando por la ruta del archivo +using System.Globalization; + +//-- creamos la clase transaccion para manejar mejor los datos de cada transaccion + +class Transaccion +{ + public int Id { get; set; } + public string Tipo { get; set; } + public double Monto { get; set; } +} + +class Programa +{ + static void Main() + { + Console.WriteLine("Introduce la ruta del archivo CSV:"); + String ruta = Console.ReadLine(); //-- solicitamos la dirección del archivo CSV + + if(string.IsNullOrWhiteSpace(ruta)|| !File.Exists(ruta)) //-- se comprueba que el archivo exista y la ruta no este en blanco + { + Console.WriteLine("Ruta invalida o el archivo no existe."); + return; + } + + var lineas = File.ReadAllLines(ruta); //-- lee todas las lineas del archivo y las almacena + + if(lineas.Length<=1) + { + Console.WriteLine("El archivo esta vacío o solo contiene encabezados"); + } + + + List transacciones = new(); //-- creamos una lista para almacenar cada transacción + + for (int i = 1; i < lineas.Length; i++) + { + var campos = lineas[i].Split(','); //-- separamos cada campo separado por una coma ',' + + if(campos.Length < 3) + continue; //-- saltamos lineas que no esten formateadas correctamente + + if (!int.TryParse(campos[0].Trim(), out int id)) continue; //-- si el formato del ID no es un numero entero lo saltamos + + string tipo = campos[1].Trim(); + + if (!double.TryParse(campos[2].Trim(), NumberStyles.Any, CultureInfo.InvariantCulture, out double monto)) continue; //- si los numeros estan mal escritos saltamos linea + + transacciones.Add(new Transaccion { Id = id, Tipo = tipo, Monto = monto }); //-- etiquetamos y guardamos los datos en la lista + + } + + var creditos = transacciones.Where(t => t.Tipo.Equals("Crédito", StringComparison.OrdinalIgnoreCase)); //-- filtramos y almacenamos por tipo las transacciones y las almacenamos en una variable + var debitos = transacciones.Where(t => t.Tipo.Equals("Débito", StringComparison.OrdinalIgnoreCase)); + var mayor = transacciones.OrderByDescending(t => t.Monto).FirstOrDefault(); //- ordenamos las transsaciones de mayor a menor para obtener la transaación más alta + + //-- dentro de las variables antes creadas vamos a sumar todos los montos almacenados para guardarlos en variables para optimizar su manejo + double montoCredito = creditos.Sum(t => t.Monto); + double montoDebito = debitos.Sum(t => t.Monto); + double balanceFinal = montoCredito - montoDebito; + + + //-- por último imprimimos el reporte final + Console.WriteLine("\nReporte de transacción"); + Console.WriteLine("-------------------"); + Console.WriteLine($"Balance final: {balanceFinal:F2}"); + if (mayor != null) + Console.WriteLine($"Transacción de mayor monto: ID {mayor.Id} - {mayor.Monto:F2}"); + + Console.WriteLine($"Conteo de transacciones: Crédito: {creditos.Count()}, Débito: {debitos.Count()}"); + + + + + Console.WriteLine("Presione la tecla (y) si desea generar un archivo CSV con su reporte"); + if (Console.ReadLine()=="y") + { + //-- crearemos un reporte en archivo CSV + string[] reporte = new[] + { + "Resumen de transacciones:", + $"Balance final,{balanceFinal:F2}", + $"Mayor transacción,ID {mayor.Id},{mayor.Monto:F2}", + $"Total Créditos,{creditos.Count()},{montoCredito:F2}", + $"Total Débitos,{debitos.Count()},{montoDebito:F2}" + }; + + File.WriteAllLines("reporte.csv", reporte); + //-- genera el archivo CSV y copia todas las lineas del arreglo reporte + //-- el reporte sera guardado el la carpeta del ejecutable del proyecto + Console.WriteLine("Reporte generado: reporte.csv"); + } + } +} + diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.deps.json b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.deps.json new file mode 100644 index 0000000..808d23c --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "Procesamiento_de_transacciones_bancarias/1.0.0": { + "runtime": { + "Procesamiento_de_transacciones_bancarias.dll": {} + } + } + } + }, + "libraries": { + "Procesamiento_de_transacciones_bancarias/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.dll b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.dll new file mode 100644 index 0000000..4b18a1e Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.dll differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.exe b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.exe new file mode 100644 index 0000000..2759227 Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.exe differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.pdb b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.pdb new file mode 100644 index 0000000..ddca758 Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.pdb differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.runtimeconfig.json b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.runtimeconfig.json new file mode 100644 index 0000000..1de3a5d --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/Procesamiento_de_transacciones_bancarias.runtimeconfig.json @@ -0,0 +1,12 @@ +{ + "runtimeOptions": { + "tfm": "net8.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "8.0.0" + }, + "configProperties": { + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/reporte.csv b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/reporte.csv new file mode 100644 index 0000000..53b9723 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/bin/Debug/net8.0/reporte.csv @@ -0,0 +1,5 @@ +Resumen de transacciones: +Balance final,10985.85 +Mayor transacción,ID 222,499.69 +Total Créditos,508,135415.52 +Total Débitos,492,124429.67 diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.AssemblyInfo.cs b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.AssemblyInfo.cs new file mode 100644 index 0000000..1a7e2a2 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// Este código fue generado por una herramienta. +// Versión de runtime:4.0.30319.42000 +// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("Procesamiento_de_transacciones_bancarias")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("Procesamiento_de_transacciones_bancarias")] +[assembly: System.Reflection.AssemblyTitleAttribute("Procesamiento_de_transacciones_bancarias")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generado por la clase WriteCodeFragment de MSBuild. + diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.AssemblyInfoInputs.cache b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.AssemblyInfoInputs.cache new file mode 100644 index 0000000..79d45a2 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +83196cf65e4d04019f7f439d06872ed6eeeb3fc74d882f356a6dd0b57b81e81d diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.GeneratedMSBuildEditorConfig.editorconfig b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..254bc83 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,15 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = Procesamiento_de_transacciones_bancarias +build_property.ProjectDir = C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.GlobalUsings.g.cs b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.GlobalUsings.g.cs new file mode 100644 index 0000000..ac22929 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.assets.cache b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.assets.cache new file mode 100644 index 0000000..6e5c51c Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.assets.cache differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.BuildWithSkipAnalyzers b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.BuildWithSkipAnalyzers new file mode 100644 index 0000000..e69de29 diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.CoreCompileInputs.cache b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..552fa72 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +3d126ec64c238589b0b6bb236fa2f6fc4ebdd4a8a2ab5ae9fb553d8605a12ca2 diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.FileListAbsolute.txt b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..c493ad0 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.csproj.FileListAbsolute.txt @@ -0,0 +1,28 @@ +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.exe +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.deps.json +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.runtimeconfig.json +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.dll +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.pdb +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.AssemblyInfoInputs.cache +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.AssemblyInfo.cs +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.csproj.CoreCompileInputs.cache +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.dll +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\refint\Procesamiento_de_transacciones_bancarias.dll +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.pdb +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.genruntimeconfig.cache +C:\Users\USUARIO\Downloads\c#\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\ref\Procesamiento_de_transacciones_bancarias.dll +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.exe +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.deps.json +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.runtimeconfig.json +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.dll +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.pdb +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.GeneratedMSBuildEditorConfig.editorconfig +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.AssemblyInfoInputs.cache +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.AssemblyInfo.cs +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.csproj.CoreCompileInputs.cache +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.dll +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\refint\Procesamiento_de_transacciones_bancarias.dll +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.pdb +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\Procesamiento_de_transacciones_bancarias.genruntimeconfig.cache +C:\Users\USUARIO\Downloads\reto tecnico\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\obj\Debug\net8.0\ref\Procesamiento_de_transacciones_bancarias.dll diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.dll b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.dll new file mode 100644 index 0000000..4b18a1e Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.dll differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.genruntimeconfig.cache b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.genruntimeconfig.cache new file mode 100644 index 0000000..2c869a5 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.genruntimeconfig.cache @@ -0,0 +1 @@ +3cec902a70eebfe898ff270814a8e596a8943f45a43d86452a4ffac22260a7d9 diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.pdb b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.pdb new file mode 100644 index 0000000..ddca758 Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/Procesamiento_de_transacciones_bancarias.pdb differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/apphost.exe b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/apphost.exe new file mode 100644 index 0000000..2759227 Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/apphost.exe differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/ref/Procesamiento_de_transacciones_bancarias.dll b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/ref/Procesamiento_de_transacciones_bancarias.dll new file mode 100644 index 0000000..12530ed Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/ref/Procesamiento_de_transacciones_bancarias.dll differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/refint/Procesamiento_de_transacciones_bancarias.dll b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/refint/Procesamiento_de_transacciones_bancarias.dll new file mode 100644 index 0000000..12530ed Binary files /dev/null and b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Debug/net8.0/refint/Procesamiento_de_transacciones_bancarias.dll differ diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.dgspec.json b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.dgspec.json new file mode 100644 index 0000000..320e3b4 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.dgspec.json @@ -0,0 +1,73 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias.csproj": {} + }, + "projects": { + "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias.csproj", + "projectName": "Procesamiento_de_transacciones_bancarias", + "projectPath": "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias.csproj", + "packagesPath": "C:\\Users\\USUARIO\\.nuget\\packages\\", + "outputPath": "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\USUARIO\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.200" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.g.props b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.g.props new file mode 100644 index 0000000..90e16db --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.g.props @@ -0,0 +1,16 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\USUARIO\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages + PackageReference + 6.13.2 + + + + + + \ No newline at end of file diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.g.targets b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.g.targets new file mode 100644 index 0000000..35a7576 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/Procesamiento_de_transacciones_bancarias.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/project.assets.json b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/project.assets.json new file mode 100644 index 0000000..2950fe5 --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/project.assets.json @@ -0,0 +1,79 @@ +{ + "version": 3, + "targets": { + "net8.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net8.0": [] + }, + "packageFolders": { + "C:\\Users\\USUARIO\\.nuget\\packages\\": {}, + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias.csproj", + "projectName": "Procesamiento_de_transacciones_bancarias", + "projectPath": "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias.csproj", + "packagesPath": "C:\\Users\\USUARIO\\.nuget\\packages\\", + "outputPath": "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\obj\\", + "projectStyle": "PackageReference", + "fallbackFolders": [ + "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages" + ], + "configFilePaths": [ + "C:\\Users\\USUARIO\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.200" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.201/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/project.nuget.cache b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/project.nuget.cache new file mode 100644 index 0000000..52d4f3d --- /dev/null +++ b/reto tecnico/Procesamiento_de_transacciones_bancarias/Procesamiento_de_transacciones_bancarias/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "3Qg4M4GfJ/w=", + "success": true, + "projectFilePath": "C:\\Users\\USUARIO\\Downloads\\reto tecnico\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias\\Procesamiento_de_transacciones_bancarias.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file diff --git a/reto tecnico/README.txt b/reto tecnico/README.txt new file mode 100644 index 0000000..2676889 --- /dev/null +++ b/reto tecnico/README.txt @@ -0,0 +1,70 @@ +INTRODUCCIÓN + +El reto consiste en generar una aplicación CLI de transacciones bancarias y genere un reporte resumido de: +-Balance final +-Transacción de mayor monto +-Conteo de transacciones +Importando un archivo CSV, para dicha aplicación se uso el IDE C#. + +INSTRUCCIONES DE EJECUCIÓN + +De preferencia para visualizar el código de la aplicación se debe de tener instalado el IDE Visual Studio 2022. + +En caso contrario un sistema operativo compatible y un editor de texto IDE como: +Visual Studio para Windows o Visual Studio Code para multiple plataforma o incluso editores simples como el Notepad++. + +Para poder ejecutarlo sin tener dependencias instaladas puede ir a la dirección del ejecutable en la carpeta del proyecto: "...\Procesamiento_de_transacciones_bancarias\Procesamiento_de_transacciones_bancarias\bin\Debug\net8.0\Procesamiento_de_transacciones_bancarias.exe" y ejecutar el programa para lo cual le pedirá la ruta del archivo CSV que desea importar. + +Debe colocar la ruta exacta por ejemplo "C:\Users\USUARIO\Downloads\data.csv", esta ruta puede ser obtenida fácilmente dando clic derecho al archivo y seleccionar la opción "Copiar como ruta de acceso". + +ENFOQUE Y SOLUCIÓN + +-Entrada del usuario +El programa solicita la ruta de un archivo CSV mediante Console.ReadLine(). +Se valida si el archivo existe con File.Exists(ruta). + +-Lectura y validación del archivo +Se leen todas las líneas con File.ReadAllLines. +Se verifica si hay al menos una línea de datos (se asume que la primera es el encabezado). + +-Procesamiento de datos +Se define una clase Transaccion para representar cada fila con 3 campos: Id, Tipo, Monto. +Se recorren las líneas desde la segunda fila en adelante. +Se filtran líneas mal formateadas (menos de 3 columnas o errores de conversión de datos). +Se agregan las transacciones válidas a una lista. + +-Análisis +Se usa LINQ para: +Obtener todas las transacciones de tipo "Crédito" y "Débito". +Calcular sumas totales por tipo. +Encontrar la transacción con mayor monto. + +-Salida por consola +Se imprime un reporte con: +Balance final (Créditos – Débitos). +Transacción de mayor monto. +Conteo de créditos y débitos. + +-Generación de reporte +Se crea un arreglo con los datos del resumen y se guarda en un archivo llamado reporte.csv. + +-Uso de la clase Transaccion +Se usó una clase para encapsular la lógica de cada transacción, mejorando la legibilidad y mantenimiento del código. De esta forma se evita trabajar directamente con arreglos de strings sin estructura. + +-Uso de LINQ +LINQ (Where, OrderByDescending, Sum, etc.) simplifica la lógica de filtrado, ordenamiento y agregación de datos. +Hace el código más fácil de entender que usar bucles manuales. + +-Manejo de errores +Se omiten líneas con formato inválido (con continue) para evitar que una línea mal escrita detenga toda la ejecución. +Se ignoran errores silenciosamente, lo cual es útil para robustez pero podría mejorarse con logs si fuera un sistema más complejo. + +-Separación de responsabilidades (a nivel básico) +Aunque todo el código está en Main, las operaciones están organizadas claramente: entrada, validación, procesamiento, salida y generación de reporte. + + +ESTRUCTURA DEL PROYECTO + +El proyecto se encuentra en un archivo llamado "Procesamiento_de_transacciones_bancarias", dentro se encuentra un archivo tipo SLN que sirve para abrir el proyecto en el Visual Studio y la carpeta que almacena el Program.CS, el launcher del proyecto para Visual Studio y las carpetas bin y obj. Bin almacena los archivos compilados, copias de bibliotecas necesarias y otros recursos requeridos durante el tiempo de ejecución, su propósito es la salida final del proyecto, dentro de esta carpeta también contiene el ejecutable final del proyecto. La carpeta obj contiene archivos intermedios que Visual Studio utiliza para la compilación, no contiene el ejecutable final de proyecto. + +