public async Task <List <ValidacionesRequisicionViewModel> > AprobacionAsync( int idRequisicion, string userNameRequeridor, string motivoIngresoDescripcion, ValidacionesRequisicionViewModel validacion) { var validaciones = await this.GetMatrizAprobacionAsync( userNameRequeridor, idRequisicion, motivoIngresoDescripcion).ConfigureAwait(false); var requisicionToValidate = new RequisicionPlazaViewModel { UserRequisicion = userNameRequeridor, Validaciones = this.mapper.Map <List <ValidacionRequisicionPlaza> >(validaciones), ToValidate = validacion }; var matrizAprobacion = await this.ValidarRequisicionAsync(requisicionToValidate).ConfigureAwait(false); var result = await this.AlmacenarCambiosAsync(idRequisicion, userNameRequeridor, matrizAprobacion) .ConfigureAwait(false); var toValidate = result.FirstOrDefault(v => v.StateValidation == EEstadoValidacion.Actual); var validated = validacion; switch (validacion.StateValidation) { case EEstadoValidacion.Cancelado: await this.NotificarAsync(idRequisicion, validated, toValidate, ETipoEvento.NotificarCancelacion) .ConfigureAwait(false); break; case EEstadoValidacion.Rechazada: await this.NotificarAsync(idRequisicion, validated, toValidate, ETipoEvento.NotificarRechazo) .ConfigureAwait(false); break; case EEstadoValidacion.Aprobada: var tipoEvento = validaciones.Any(v => v.EstadoValidacion == EEstadoValidacion.Rechazada) ? ETipoEvento.SolicitarAutorizacion : ETipoEvento.SolicitarAutorizacion; await this.NotificarAsync(idRequisicion, validated, toValidate, tipoEvento).ConfigureAwait(false); break; } return(result); }
private async Task <List <ValidaRequisicion> > ValidarRequisicionAsync(RequisicionPlazaViewModel requisicion) { var urlApi = this.configuracionGlobal.Configuration <string>("AutorizacionAPI"); var response = await HttpRequestFactory.PutAsync($"{urlApi}/api/Autorizacion", requisicion) .ConfigureAwait(false); var strResult = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var validaciones = JsonConvert.DeserializeObject <List <ValidaRequisicion> >(strResult); return(validaciones); }
public async Task <List <ValidacionesRequisicionViewModel> > SolicitarAutorizacionAsync( int idRequisicion, string userName, string motivoIngreso) { var validaciones = await this.GetMatrizAprobacionAsync(userName, idRequisicion, motivoIngreso) .ConfigureAwait(false); var requisicionToValidate = new RequisicionPlazaViewModel { UserRequisicion = userName, Validaciones = this.mapper?.Map <List <ValidacionRequisicionPlaza> >(validaciones), ToValidate = null }; var matrizAprobacion = await this.ValidarRequisicionAsync(requisicionToValidate).ConfigureAwait(false); var result = await this.AlmacenarCambiosAsync(idRequisicion, userName, matrizAprobacion) .ConfigureAwait(false); var toValidate = result.FirstOrDefault(v => v.StateValidation == EEstadoValidacion.Actual); if (toValidate != null) { await this.NotificarAsync(idRequisicion, null, toValidate, ETipoEvento.SolicitarAutorizacion) .ConfigureAwait(false); } else { var aceptadas = result.All(v => v.StateValidation == EEstadoValidacion.Aprobada); toValidate = result.OrderByDescending(v => v.Date).FirstOrDefault(); if (aceptadas) { await this.NotificarAsync(idRequisicion, null, toValidate, ETipoEvento.NotificarAceptacion) .ConfigureAwait(false); } } return(result.OrderBy(x => x.NivelValidacion).ToList()); }