Exemplo n.º 1
0
        public async Task <FileUpload> AddRequisicionArchivo(int idRequisicion, int idExpediente, FileUpload fileUpload)
        {
            fileUpload = await this.repository.AddAsync(fileUpload)
                         .ConfigureAwait(false);

            var requisicionDetalle = await this.requisicionRepository.Single(
                new RequisicionDetalleSpecification(idRequisicion))
                                     .ConfigureAwait(false);

            var requisicionArchivo =
                requisicionDetalle.Propuesta.PropuestaArchivos.FirstOrDefault(e => e.ExpedienteId == idExpediente);

            if (requisicionArchivo != null)
            {
                requisicionArchivo.File = fileUpload;

                await this.requisicionArchivoRepository.UpdateAsync(requisicionArchivo)
                .ConfigureAwait(false);
            }
            else
            {
                requisicionArchivo = new RequisicionArchivo
                {
                    File         = fileUpload,
                    ExpedienteId = idExpediente
                };

                requisicionDetalle.Propuesta.PropuestaArchivos.Add(requisicionArchivo);

                await this.requisicionRepository.UpdateAsync(requisicionDetalle)
                .ConfigureAwait(false);
            }

            return(fileUpload);
        }
        public async Task <ActionResult <bool> > CandidatoDelete(int idRequisicion, int idFile)
        {
            try
            {
                var requisicion = await this.requisicionDetalleRepository.Single(
                    new RequisicionDetalleSpecification(idRequisicion))
                                  .ConfigureAwait(false);

                RequisicionArchivo requisicionArchivo = null;

                if (requisicion.Propuestas != null)
                {
                    foreach (var requisicionPropuesta in requisicion.Propuestas)
                    {
                        requisicionArchivo =
                            requisicionPropuesta.PropuestaArchivos.FirstOrDefault(
                                p => p?.File != null && p.File.Id == idFile);

                        if (requisicionArchivo != null)
                        {
                            break;
                        }
                    }
                }

                await this.RemoveFileAsync(idFile);

                if (requisicionArchivo != null)
                {
                    requisicionArchivo.File = null;
                    await this.requisicionArchivoRepository.UpdateAsync(requisicionArchivo)
                    .ConfigureAwait(false);

                    return(this.Ok());
                }

                return(this.NotFound());
            }
            catch (Exception e)
            {
                return(this.BadRequest(e.Message));
            }
        }