public async Task <WrapperSimpleTypesDTO> CrearArchivoStream(int codigoTipoArchivo, Stream sourceStream)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
                using (DbContextTransaction transaction = context.Database.BeginTransaction())
                {
                    ArchivosRepository archivoRepo = new ArchivosRepository(context);

                    Archivos archivoParaCrear = new Archivos
                    {
                        CodigoTipoArchivo = codigoTipoArchivo,
                        ArchivoContenido  = new byte[] { 0, 1, 2 }
                    };

                    archivoRepo.CrearArchivo(archivoParaCrear);

                    WrapperSimpleTypesDTO wrapper = new WrapperSimpleTypesDTO();
                    wrapper.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                    await archivoRepo.ModificarArchivoContenidoStream(archivoParaCrear.Consecutivo, sourceStream);

                    transaction.Commit();

                    if (wrapper.NumeroRegistrosAfectados > 0)
                    {
                        wrapper.Exitoso                  = true;
                        wrapper.ConsecutivoCreado        = archivoParaCrear.Consecutivo;
                        wrapper.ConsecutivoArchivoCreado = archivoParaCrear.Consecutivo;
                    }

                    return(wrapper);
                }
        }
        public async Task <WrapperSimpleTypesDTO> ModificarArchivoCandidatoVideos(int codigoTipoArchivo, int codigoCandidatoVideo, int codigoArchivo, Stream sourceStream)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
                using (DbContextTransaction transaction = context.Database.BeginTransaction())
                {
                    ArchivosRepository archivoRepo = new ArchivosRepository(context);

                    Archivos archivoParaCrear = new Archivos
                    {
                        CodigoTipoArchivo = codigoTipoArchivo,
                        ArchivoContenido  = new byte[] { 0, 1, 2 }
                    };

                    archivoRepo.CrearArchivo(archivoParaCrear);

                    WrapperSimpleTypesDTO wrapper = new WrapperSimpleTypesDTO();
                    wrapper.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                    await archivoRepo.ModificarArchivoContenidoStream(archivoParaCrear.Consecutivo, sourceStream);

                    if (wrapper.NumeroRegistrosAfectados > 0 || archivoParaCrear.Consecutivo > 0)
                    {
                        wrapper.Exitoso                  = true;
                        wrapper.ConsecutivoCreado        = archivoParaCrear.Consecutivo;
                        wrapper.ConsecutivoArchivoCreado = archivoParaCrear.Consecutivo;

                        CandidatosRepository candidatosRepo = new CandidatosRepository(context);

                        // Meto el consecutivo del archivo generado por el EF por la creacion
                        CandidatosVideos candidatoVideo = new CandidatosVideos
                        {
                            Consecutivo   = codigoCandidatoVideo,
                            CodigoArchivo = archivoParaCrear.Consecutivo
                        };

                        CandidatosVideos candidatoVideoExistente = await candidatosRepo.ModificarCodigoArchivoCandidatoVideo(candidatoVideo);

                        // Elimino el viejo archivo
                        if (codigoArchivo > 0)
                        {
                            Archivos archivoParaBorrar = new Archivos
                            {
                                Consecutivo = codigoArchivo
                            };

                            archivoRepo.EliminarArchivo(archivoParaBorrar);
                        }

                        wrapper.NumeroRegistrosAfectados += await context.SaveChangesAsync();

                        transaction.Commit();
                    }

                    return(wrapper);
                }
        }
        public async Task <WrapperSimpleTypesDTO> AsignarArchivoReciboPago(int codigoHistorialPago, int codigoArchivo, Stream sourceStream)
        {
            using (SportsGoEntities context = new SportsGoEntities(false))
                using (DbContextTransaction transaction = context.Database.BeginTransaction())
                {
                    ArchivosRepository archivoRepo = new ArchivosRepository(context);

                    Archivos archivoParaCrear = new Archivos
                    {
                        CodigoTipoArchivo = (int)TipoArchivo.Imagen,
                        ArchivoContenido  = new byte[] { 0, 1, 2 }
                    };

                    archivoRepo.CrearArchivo(archivoParaCrear);

                    WrapperSimpleTypesDTO wrapper = new WrapperSimpleTypesDTO();
                    wrapper.NumeroRegistrosAfectados = await context.SaveChangesAsync();

                    await archivoRepo.ModificarArchivoContenidoStream(archivoParaCrear.Consecutivo, sourceStream);

                    if (wrapper.NumeroRegistrosAfectados > 0 || archivoParaCrear.Consecutivo > 0)
                    {
                        wrapper.Exitoso                  = true;
                        wrapper.ConsecutivoCreado        = archivoParaCrear.Consecutivo;
                        wrapper.ConsecutivoArchivoCreado = archivoParaCrear.Consecutivo;

                        PagosRepository pagosRepo = new PagosRepository(context);

                        // Meto el consecutivo del archivo generado por el EF por la creacion
                        HistorialPagosPersonas pagoParaAsignar = new HistorialPagosPersonas
                        {
                            Consecutivo   = codigoHistorialPago,
                            CodigoArchivo = archivoParaCrear.Consecutivo
                        };

                        HistorialPagosPersonas pagoExistente = await pagosRepo.AsignarArchivoHistorialPago(pagoParaAsignar);

                        // Elimino el viejo archivo
                        if (codigoArchivo > 0)
                        {
                            Archivos archivoParaBorrar = new Archivos
                            {
                                Consecutivo = codigoArchivo
                            };

                            archivoRepo.EliminarArchivo(archivoParaBorrar);
                        }

                        wrapper.NumeroRegistrosAfectados += await context.SaveChangesAsync();

                        transaction.Commit();
                    }

                    return(wrapper);
                }
        }