Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
                    }
                }
            }
        }