コード例 #1
0
        private void SetPermisos(
            ValidacionesRequisicionViewModel validacionActual,
            string currentUserName,
            bool isAdmin    = false,
            bool isCanceled = false)
        {
            if (validacionActual == null)
            {
                return;
            }

            if (isCanceled)
            {
                return;
            }

            if (!isAdmin)
            {
                if (currentUserName != string.Empty)
                {
                    if (validacionActual.UserName?.ToUpper() != currentUserName?.ToUpper())
                    {
                        validacionActual.CanApprove = false;
                        validacionActual.CanDeny    = false;
                        validacionActual.CanCancel  = false;
                        return;
                    }
                }
            }

            switch (validacionActual.NivelValidacion)
            {
            case ENivelValidacion.Requeridor:
                validacionActual.CanApprove = false;
                validacionActual.CanCancel  = false;
                validacionActual.CanDeny    = false;
                break;

            case ENivelValidacion.Presupuesto:
            case ENivelValidacion.DireccionGeneral:
                validacionActual.CanApprove = true;
                validacionActual.CanDeny    = true;
                validacionActual.CanCancel  = true;
                break;

            default:
                validacionActual.CanApprove = true;
                validacionActual.CanDeny    = true;
                validacionActual.CanCancel  = false;
                break;
            }

            validacionActual.StateValidation = EEstadoValidacion.Actual;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        private async Task <bool> NotificarAsync(
            int idRequisicion,
            ValidacionesRequisicionViewModel validated,
            ValidacionesRequisicionViewModel toValidate,
            ETipoEvento tipoNotificacion)
        {
            User   user    = null;
            string toEmail = null;

            if (toValidate != null)
            {
                user = await this.userService.GetUserByUserNameAsync(toValidate.UserName).ConfigureAwait(false);
            }
            else
            {
                var coordinadorRS = this.configuracionGlobal.Configuration <string>("UserCoordinadorRS");
                user = await this.userService.GetUserByUserNameAsync(coordinadorRS).ConfigureAwait(false);

                if (tipoNotificacion == ETipoEvento.SolicitarAutorizacion)
                {
                    return(true);
                }
            }

            toEmail = user.Mail;

            var notificacion = new NotificacionViewModel
            {
                ToMail = new List <string> {
                    toEmail
                },
                TipoEvento = tipoNotificacion,
                Item       = new
                {
                    user,
                    idRequisicion,
                    tipoNotificacion,
                    fecha      = DateTime.Now,
                    comentario = validated?.Description
                }
            };

            return(await this.notificarService.NotificarAsync(notificacion).ConfigureAwait(false));
        }
コード例 #4
0
        public async Task <ActionResult> Put(
            int idRequisicion,
            [FromBody] ValidacionesRequisicionViewModel validacion = null)
        {
            try
            {
                var requisicion = this.requisicionService.Single(new RequisicionSpecification(idRequisicion));

                if (validacion == null)
                {
                    if (requisicion.ValidaRequisiciones.Any())
                    {
                        var toValidate =
                            requisicion.ValidaRequisiciones.FirstOrDefault(
                                v => v.NivelValidacion == ENivelValidacion.Requeridor);

                        validacion = new ValidacionesRequisicionViewModel
                        {
                            Active          = toValidate.Active,
                            Date            = DateTime.Now,
                            Description     = toValidate.Comentario,
                            Id              = toValidate.Id,
                            Info            = toValidate.UserValidador?.ToString(),
                            Name            = toValidate.NivelValidacion.GetDescription(),
                            NivelValidacion = toValidate.NivelValidacion,
                            StateValidation = EEstadoValidacion.Aprobada,
                            UserName        = toValidate.AprobadorUserName
                        };

                        await this.autorizacionService.AprobacionAsync(
                            idRequisicion,
                            requisicion.UserRequeridor,
                            requisicion.MotivoIngreso.Descripcion,
                            validacion)
                        .ConfigureAwait(true);
                    }
                    else
                    {
                        await this.autorizacionService.SolicitarAutorizacionAsync(
                            idRequisicion,
                            requisicion.UserRequeridor,
                            requisicion.MotivoIngreso.Descripcion)
                        .ConfigureAwait(true);
                    }
                }
                else
                {
                    await this.autorizacionService.AprobacionAsync(
                        idRequisicion,
                        requisicion.UserRequeridor,
                        requisicion.MotivoIngreso.Descripcion,
                        validacion)
                    .ConfigureAwait(true);
                }

                await this.requisicionService.SetAsignacionAsync(requisicion, null, false)
                .ConfigureAwait(false);

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