public async Task EnviarPropuestaAsync(int idRequisicion, List <Attachment> attachments) { var specification = new RequisicionDetalleSpecification(idRequisicion); var requisicion = await this.requisionCandidatoRepository.Single(specification).ConfigureAwait(false); if (requisicion != null) { var propuesta = requisicion.Propuestas.OrderByDescending(p => p.Created) .ThenByDescending(p => p.FechaEnvioPropuesta).ThenByDescending(p => p.FechaContestacion) .FirstOrDefault(p => !p.FechaEnvioPropuesta.HasValue && !p.FechaContestacion.HasValue); if (propuesta == null) { propuesta = new RequisicionPropuesta { FechaEnvioPropuesta = DateTime.Now }; requisicion.Propuestas.Add(propuesta); } else { propuesta.FechaEnvioPropuesta = DateTime.Now; } await this.requisionCandidatoRepository.UpdateAsync(requisicion).ConfigureAwait(false); var candidato = await this.candidatoService.GetCandidatoIdoneoAsync(idRequisicion) .ConfigureAwait(false); candidato = this.candidatoService.Single(new CandidatoSpecification(candidato.Id)); await this.NotificarOfertaEconomica(candidato, attachments).ConfigureAwait(false); } }
public async Task EstablecerSalarioPropuesto(int idRequisicion, dynamic propuestaSalarial) { var asyncRepository = this.repository; if (asyncRepository != null) { var requisicion = await asyncRepository.Single(new RequisicionSpecification(idRequisicion)) .ConfigureAwait(false); if (requisicion != null) { RequisicionPropuesta propuesta = null; var detalle = requisicion.RequisicionDetalle; if (detalle != null) { propuesta = detalle.Propuestas.OrderByDescending(p => p.Created) .ThenByDescending(p => p.FechaEnvioPropuesta).ThenByDescending(p => p.FechaContestacion) .FirstOrDefault(p => !p.FechaEnvioPropuesta.HasValue && !p.FechaContestacion.HasValue); if (propuesta == null) { propuesta = new RequisicionPropuesta { Salario = propuestaSalarial.salario, Bonos = propuestaSalarial.bonos, Beneficios = propuestaSalarial.beneficios }; detalle.Propuestas.Add(propuesta); } else { propuesta.Salario = propuestaSalarial.salario; propuesta.Bonos = propuestaSalarial.bonos; propuesta.Beneficios = propuestaSalarial.beneficios; } } await UpdateAsync(idRequisicion, requisicion).ConfigureAwait(false); // Notificación de propuesta. await this.NotificarPropuestaCargada(idRequisicion).ConfigureAwait(false); if (propuesta != null) { await this.ValidarTopeSalarial(requisicion, propuesta.Salario).ConfigureAwait(false); } } } }