public async Task <JsonResult> CerrarPrecliente(int id_usuario, bool con_carta_encomienda, string id_precliente, string motivo_sin_carta_encomienda)
 {
     try
     {
         return(await Task.Run(() =>
         {
             var resultado = registroCliente.CerrarPrecliente(id_usuario, con_carta_encomienda, motivo_sin_carta_encomienda);
             if (resultado)
             {
                 var envioCorreo = notificacionBusiness.EnvioCorreoNotificacion(int.Parse(id_precliente));
                 return Json(new { resultado }, JsonRequestBehavior.AllowGet);
             }
             else
             {
                 return Json(new { resultado = false, mensaje = "Ocurrió un error al cerrar el precliente." }, JsonRequestBehavior.AllowGet);
             }
         }));
     }
     catch (System.Exception ex)
     {
         return(await Task.Run(() =>
         {
             return Json(new
             {
                 resultado = false,
                 mensaje = "Ocurrió un error al guardar los datos.",
                 ErroTecnico = ex.Message
             }, JsonRequestBehavior.AllowGet);
         }));
     }
 }
        public async Task <JsonResult> AprobacionActCliente(int idUsuario, int idPrecliente, string observacion)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    return(await Task.Run(() =>
                    {
                        EstatusCliente estatus = EstatusCliente.Cliente;
                        aprobacionBusiness.EliminaActulizaTemporal(idUsuario.ToString(), idPrecliente);
                        var actualizarEstatus = aprobacionBusiness.RealizarRevalidacion(idPrecliente, idUsuario, estatus, observacion);

                        if (actualizarEstatus)
                        {
                            var envioCorreo = notificacionBusiness.EnvioCorreoNotificacion(idPrecliente);

                            if (envioCorreo != null)
                            {
                                return Json(new { resultado = true, mensaje = "", data = "" }, JsonRequestBehavior.AllowGet);
                            }
                            else
                            {
                                return Json(new { resultado = false, mensaje = "Ocurrió un error al realizar la revalidacion.", data = "" }, JsonRequestBehavior.AllowGet);
                            }
                        }
                        else
                        {
                            return Json(new { resultado = false, mensaje = "Ocurrió un error al realizar la revalidacion.", data = "" }, JsonRequestBehavior.AllowGet);
                        }
                    }));
                }
                else
                {
                    return(Json(new { resultado = false, mensaje = "Ocurrió un error al obtener los datos." }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (System.Exception ex)
            {
                return(await Task.Run(() =>
                {
                    return Json(new { resultado = false, mensaje = "Ocurrió un error al realizar la revalidacion.", ErrorTecnico = ex.Message }, JsonRequestBehavior.AllowGet);
                }));
            }
        }
        public async Task <JsonResult> AprobacionPrealta(int idUsuario, int idPrecliente)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    return(await Task.Run(() =>
                    {
                        var actualizarEstatus = aprobacionBussiness.RealizarRevalidacion(
                            idPrecliente, idUsuario, EstatusCliente.AprobadoPreAlta, "");
                        if (actualizarEstatus)
                        {
                            var envioCorreo = notificacionBusiness.EnvioCorreoNotificacion(idPrecliente);

                            if (envioCorreo != null)
                            {
                                return Json(new { resultado = true }, JsonRequestBehavior.AllowGet);
                            }
                            else
                            {
                                return Json(new { resultado = false, mensaje = "Ocurrió un error al realizar la revalidacion." }, JsonRequestBehavior.AllowGet);
                            }
                        }
                        else
                        {
                            return Json(new { resultado = false, mensaje = "Ocurrió un error al realizar la revalidacion." }, JsonRequestBehavior.AllowGet);
                        }
                    }));
                }
                else
                {
                    return(Json(new { resultado = false, mensaje = "Ocurrió un error al obtener los datos." }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (System.Exception ex)
            {
                return(Json(new { resultado = false, mensaje = "Ocurrió un error al realizar la revalidacion.", ErrorTecnico = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
        public async Task <JsonResult> TerminarProcedimientoOperacion(string id_precliente, string id_usuario)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    return(await Task.Run(() =>
                    {
                        if (string.IsNullOrEmpty(id_precliente) || string.IsNullOrEmpty(id_usuario))
                        {
                            throw new Exception("El parametro id_precliente o id_usuario no pueden ser nulos o vacíos.");
                        }

                        DataTable datosUsr = datosUsuario.ObtenerDatosUsuario(id_usuario.ToString());
                        int previoEstatus = Convert.ToInt16(datosUsr.Rows[0]["estatus"]);
                        int nuevoEstatus = 0;

                        if (previoEstatus == 5) //estatus aprobado sin procedimiento pre alta
                        {
                            nuevoEstatus = 10;
                        }
                        else if (previoEstatus == 8 &&
                                 Convert.ToBoolean(datosUsr.Rows[0]["banderilla"])) //estatus cliente sin procedimiento
                        {
                            nuevoEstatus = 11;
                        }
                        else
                        {
                            throw new Exception("El cliente debe estar en estatus " +
                                                "'Aprobado sin procedimiento Pre-Alta'" +
                                                " o " +
                                                "'Para aprobación Procedimiento Cliente' con banderilla activo.");
                        }

                        var actualizarEstatus = clienteBusiness.ActualizarEstatus(int.Parse(id_usuario), nuevoEstatus);

                        var envioCorreo = notificacionBusiness.EnvioCorreoNotificacion(int.Parse(id_precliente));

                        if (actualizarEstatus != null && envioCorreo != null)
                        {
                            return Json(new { resultado = true, mensaje = "", data = "" }, JsonRequestBehavior.AllowGet);
                        }
                        else
                        {
                            return Json(new { resultado = false, mensaje = "Error al Terminar Procesos de Operación", data = "" }, JsonRequestBehavior.AllowGet);
                        }
                    }));
                }
                else
                {
                    return(Json(new { resultado = false, mensaje = "Ocurrió un error al obtener los datos." }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (System.Exception ex)
            {
                return(await Task.Run(() =>
                {
                    return Json(new
                    {
                        resultado = false,
                        mensaje = "Ocurrió un error al obtener los datos.",
                        ErroTecnico = ex.Message
                    }, JsonRequestBehavior.AllowGet);
                }));
            }
        }