public async Task<int> ActualizarClienteAsync(EditorCliente editor)
        {
            Cliente = await BuscarClienteAsync(editor.Id);

            ModificarCliente(editor);
                             
            _contexto.Entry(Cliente).State = EntityState.Modified;
            return  await GuardarCambiosAsync();
         }
        public async Task<int> CrearClienteAsync(EditorCliente editor)
        {
            Cliente = new Cliente();

            ModificarCliente(editor);         

            _contexto.Clientes.Add(Cliente);

            var cambios = await GuardarCambiosAsync();
            
            editor.InyectarCliente(Cliente);

            return cambios;
        }
 private void ModificarCliente(EditorCliente editor)
 {
     Cliente.InjectFrom(editor);
 }
        private List<EditorCliente> ObtenerClientesDeExcel(Stream stream, SelectorColumnasExcelCliente columnas)
        {
            var workbook = new XLWorkbook(stream);
            var worksheet = workbook.Worksheets.First();

            var firstRow = worksheet.FirstRowUsed();
            var rowUsed = firstRow.RowUsed();
            rowUsed = rowUsed.RowBelow();

            var clientes = new List<EditorCliente>();                

            while (!rowUsed.Cell(columnas.LetraColumnaNombreOEmpresa).IsEmpty())
            {
                var cliente = new EditorCliente {
                    NombreOEmpresa = rowUsed.Cell(columnas.LetraColumnaNombreOEmpresa).GetString(),
                    NumeroIdentificacionFiscal = rowUsed.Cell(columnas.LetraColumnaNumeroIdentificacionFiscal).GetString(),
                    NombreComercial = string.IsNullOrEmpty(columnas.LetraColumnaNombreComercial)  ? null : rowUsed.Cell(columnas.LetraColumnaNombreComercial).GetString(),
                    PersonaContacto = string.IsNullOrEmpty(columnas.LetraColumnaPersonaContacto) ? null : rowUsed.Cell(columnas.LetraColumnaPersonaContacto).GetString(),
                    Email = string.IsNullOrEmpty(columnas.LetraColumnaEmail) ? null : rowUsed.Cell(columnas.LetraColumnaEmail).GetString(),
                    Direccion1 = string.IsNullOrEmpty(columnas.LetraColumnaDireccion) ? null : rowUsed.Cell(columnas.LetraColumnaDireccion).GetString(),
                    Localidad = string.IsNullOrEmpty(columnas.LetraColumnaLocalidad) ? null : rowUsed.Cell(columnas.LetraColumnaLocalidad).GetString(),
                    Provincia = string.IsNullOrEmpty(columnas.LetraColumnaProvincia) ? null : rowUsed.Cell(columnas.LetraColumnaProvincia).GetString(),
                    CodigoPostal = string.IsNullOrEmpty(columnas.LetraColumnaCodigoPostal) ? null : rowUsed.Cell(columnas.LetraColumnaCodigoPostal).GetString(),
                    ComentarioInterno = string.IsNullOrEmpty(columnas.LetraColumnaComentarioInterno) ? null : rowUsed.Cell(columnas.LetraColumnaComentarioInterno).GetString()
                };

                if(!clientes.Any(m=> m.NombreOEmpresa == cliente.NombreOEmpresa|| m.NumeroIdentificacionFiscal == cliente.NumeroIdentificacionFiscal))
                    clientes.Add(cliente);

                rowUsed = rowUsed.RowBelow();
            }

            return clientes.Distinct().ToList();
        }
 public async Task<EditorCliente> BuscaEditorClienteAsync(int? idCliente)
 {
     var cliente = await BuscarClienteAsync(idCliente);
     var editor = new EditorCliente();
     editor.InyectarCliente(cliente);
     return editor;
 }