Exemple #1
0
        public Respuesta update([FromUri] int id, [FromBody] Promocion promocion_data)
        {
            Respuesta respuesta = new Respuesta(); respuesta.resultado = 0;

            if (id < 1 || promocion_data == null)
            {
                respuesta.mensaje = "No se recibieron datos."; return(respuesta);
            }
            respuesta.mensaje = Tools.VerifyToken(promocion_data.sesion, 29);
            if (respuesta.mensaje != "1")
            {
                return(respuesta);
            }

            try
            {
                using (MacEntities db = new MacEntities()) {
                    var estatus = true;
                    if (promocion_data.estatus == "Inactiva")
                    {
                    }

                    tbl_promociones promocion = db.tbl_promociones.Find(id);
                    if (promocion == null)
                    {
                        respuesta.mensaje = "No se encontro la promoción"; return(respuesta);
                    }
                    promocion.nombre      = promocion_data.nombre;
                    promocion.descripcion = promocion_data.descripcion;
                    promocion.precio      = promocion_data.precio;
                    promocion.imagen      = promocion_data.imagen;
                    if (promocion_data.estatus == "Inactiva")
                    {
                        promocion.fecha_anulacion = DateTime.Now; estatus = false;
                    }
                    promocion.estatus     = estatus;
                    promocion.fecha_desde = Tools.GetDateTimeObject(promocion_data.fecha_desde);
                    promocion.fecha_fin   = Tools.GetDateTimeObject(promocion_data.fecha_fin);

                    db.Entry(promocion).State = System.Data.Entity.EntityState.Modified;
                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "Error, no se pudo actualizar la promoción";
                    }
                    else
                    {
                        respuesta.mensaje = "La promoción fue actualizada exitosamente."; respuesta.resultado = 1;
                    }
                }
            }
            catch (Exception ex) { respuesta.mensaje = "Error, intente mas tarde.";
                                   //respuesta.data = ex;
            }
            finally { }

            return(respuesta);
        }//Update
Exemple #2
0
        public Respuesta suspend([FromUri] int id, [FromBody] Promocion promocion_data)
        {
            Respuesta respuesta = new Respuesta(); respuesta.resultado = 0;

            respuesta.mensaje = Tools.VerifyToken(promocion_data.sesion, 29);
            if (respuesta.mensaje != "1")
            {
                return(respuesta);
            }
            try
            {
                using (MacEntities db = new MacEntities())
                {
                    var id_usuario_anulacion = (from usuario in db.tbl_usuarios
                                                where usuario.usuario == promocion_data.sesion.usuario &&
                                                usuario.activo == true
                                                select usuario.id).FirstOrDefault();
                    if (id_usuario_anulacion == 0)
                    {
                        respuesta.mensaje = "El usuario no pudo ser encontrado."; return(respuesta);
                    }

                    tbl_promociones promocion = db.tbl_promociones.Find(id);
                    if (promocion == null)
                    {
                        respuesta.mensaje = "La prmocion no pudo ser encontrada."; return(respuesta);
                    }
                    promocion.id_usuario_anulacion = id_usuario_anulacion;
                    promocion.motivo_anulacion     = promocion_data.motivo_anulacion;
                    promocion.fecha_anulacion      = DateTime.Now;
                    promocion.estatus = false;

                    db.Entry(promocion).State = System.Data.Entity.EntityState.Modified;
                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "Error, no se pudo suspender la promoción";
                    }
                    else
                    {
                        respuesta.mensaje = "La promoción fue suspendida exitosamente."; respuesta.resultado = 1;
                    }
                }
            }
            catch (Exception ex) { respuesta.mensaje = "Error, intente mas tarde."; }
            finally { }

            return(respuesta);
        }//Update
        public Respuesta update([FromBody] Nota nota_actualizada,
                                [FromUri] int id, [FromUri] int nota_id)
        {
            Respuesta respuesta = new Respuesta(); respuesta.resultado = 0;

            respuesta.mensaje = Tools.VerifyToken(nota_actualizada.sesion, Tools.crm_rol_id);
            if (respuesta.mensaje != "1")
            {
                return(respuesta);
            }

            try
            {
                using (MacEntities db = new MacEntities())
                {
                    var id_contacto = (from c in db.tbl_contactos
                                       where c.id == id
                                       select c.id).FirstOrDefault();

                    if (id_contacto == 0)
                    {
                        respuesta.mensaje = "Error, contacto no encontrado."; return(respuesta);
                    }

                    tbl_contactos_notas nota = db.tbl_contactos_notas.Find(nota_id);
                    if (nota == null)
                    {
                        respuesta.mensaje = "Error, nota no encontrada."; return(respuesta);
                    }

                    nota.titulo    = "";
                    nota.contenido = nota_actualizada.contenido;

                    db.Entry(nota).State = System.Data.Entity.EntityState.Modified;

                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "Hubo un error con la actualizacion de la nota.";
                        return(respuesta);
                    }

                    respuesta.mensaje = "Nota actualizada exitosamente."; respuesta.resultado = 1;
                } //using
            }     //try
            catch (DbEntityValidationException ex)
            {
                respuesta.mensaje = "Errores econtrados.";
                List <Error> error_list = new List <Error>();
                foreach (var errors in ex.EntityValidationErrors)
                {
                    foreach (var error in errors.ValidationErrors)
                    {
                        // get the error message
                        error_list.Add(new Error(error.ErrorMessage));
                    } //inner foreach
                }     //foreach
                respuesta.data = error_list;
            }         //DbEntityValidationException ex
            catch (Exception e) { respuesta.mensaje = "Error, intente mas tarde."; respuesta.data = e; }

            return(respuesta);
        }//update
        public Respuesta update([FromBody] Seguimiento seguimiento_actualizado,
                                [FromUri] int id, [FromUri] int seguimiento_id)
        {
            Respuesta respuesta = new Respuesta(); respuesta.resultado = 0;

            respuesta.mensaje = Tools.VerifyToken(seguimiento_actualizado.sesion, Tools.crm_rol_id);
            if (respuesta.mensaje != "1")
            {
                return(respuesta);
            }

            try
            {
                using (MacEntities db = new MacEntities())
                {
                    //departamento id

                    var tipo_seguimiento_id = (from s in db.tbl_seguimientos
                                               where s.nombre == seguimiento_actualizado.tipo_seguimiento
                                               select s.id).FirstOrDefault();

                    if (tipo_seguimiento_id == 0)
                    {
                        respuesta.mensaje = "Error, tipo de seguimiento no encontrado."; return(respuesta);
                    }

                    //departamento id

                    var resultado_id = (from r in db.tbl_resultados
                                        where r.nombre == seguimiento_actualizado.resultado
                                        select r.id).FirstOrDefault();

                    if (resultado_id == 0)
                    {
                        respuesta.mensaje = "Error, tipo de resultado no encontrado."; return(respuesta);
                    }

                    var id_contacto = (from c in db.tbl_contactos
                                       where c.id == id
                                       select c.id).FirstOrDefault();

                    if (id_contacto == 0)
                    {
                        respuesta.mensaje = "Error, contacto no encontrado."; return(respuesta);
                    }

                    tbl_contactos_seguimientos seguimiento = db.tbl_contactos_seguimientos.Find(id);
                    if (seguimiento == null)
                    {
                        respuesta.mensaje = "Error, seguimiento no encontrado."; return(respuesta);
                    }
                    seguimiento.id_seguimiento = tipo_seguimiento_id;
                    seguimiento.id_resultado   = resultado_id;
                    seguimiento.id_contacto    = id_contacto;
                    seguimiento.observaciones  = seguimiento_actualizado.observaciones;
                    seguimiento.fecha          = Tools.GetFullDateTimeObject(seguimiento_actualizado.fecha);

                    db.Entry(seguimiento).State = System.Data.Entity.EntityState.Modified;
                    db.tbl_contactos_seguimientos.Add(seguimiento);
                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "Hubo un error con la actualizacion del seguimiento.";
                        return(respuesta);
                    }

                    respuesta.mensaje = "Seguimiento actualizado exitosamente."; respuesta.resultado = 1;
                } //using
            }     //try
            catch (DbEntityValidationException ex)
            {
                respuesta.mensaje = "Errores econtrados.";
                List <Error> error_list = new List <Error>();
                foreach (var errors in ex.EntityValidationErrors)
                {
                    foreach (var error in errors.ValidationErrors)
                    {
                        // get the error message
                        error_list.Add(new Error(error.ErrorMessage));
                    } //inner foreach
                }     //foreach
                respuesta.data = error_list;
            }         //DbEntityValidationException ex
            catch (Exception e) { respuesta.mensaje = "Error, intente mas tarde."; respuesta.data = e; }

            return(respuesta);
        }//update
        public Respuesta ActualizarHuella([FromUri] int id_empleado, [FromBody] Empleado empleado_actualizado)
        {
            Respuesta respuesta = new Respuesta(); respuesta.resultado = 0;

            byte[] huella;
            try
            {
                huella = Convert.FromBase64String(empleado_actualizado.huella);
            }
            catch (Exception e)
            {
                respuesta.mensaje = "Error, la huella es invalida."; respuesta.data = e;
                return(respuesta);
            }

            //respuesta.data = huella;
            //respuesta.mensaje = "si logro decodificar"; return respuesta;

            try
            {
                using (MacEntities db = new MacEntities())
                {
                    var empleado =
                        (from e in db.tbl_empleados
                         where e.id == id_empleado
                         select e).FirstOrDefault();

                    if (empleado == null)
                    {
                        respuesta.mensaje = "Error, empleado no encontrado."; return(respuesta);
                    }

                    empleado.huella = huella;

                    db.Entry(empleado).State = System.Data.Entity.EntityState.Modified;
                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "Hubo un error con la actualización de la huella del empleado.";
                        return(respuesta);
                    }
                }
                respuesta.resultado = 1;
                respuesta.mensaje   = "Huella actualizada.";
            }//try
            catch (DbEntityValidationException ex)
            {
                respuesta.mensaje = "Errores econtrados.";
                List <Error> error_list = new List <Error>();
                foreach (var errors in ex.EntityValidationErrors)
                {
                    foreach (var error in errors.ValidationErrors)
                    {
                        // get the error message
                        error_list.Add(new Error(error.ErrorMessage));
                    } //inner foreach
                }     //foreach
                respuesta.data = error_list;
            }         //DbEntityValidationException ex
            catch (Exception e) { respuesta.mensaje = "Error, intente mas tarde."; respuesta.data = e; }

            return(respuesta);
        }//update huella
        public Respuesta Login([FromBody] Usuario usuario_login)
        {
            int       login_type = 2;
            Respuesta respuesta  = new Respuesta(); respuesta.resultado = 0;

            try
            {
                using (MacEntities db = new MacEntities())
                {
                    var usuario = (from u in db.tbl_usuarios
                                   where u.usuario == usuario_login.nombre_usuario
                                   select u).FirstOrDefault();
                    if (usuario == null)
                    {
                        respuesta.mensaje = "Usuario no encontrado."; return(respuesta);
                    }
                    if (!(bool)usuario.activo)
                    {
                        respuesta.mensaje = "Usuario inactivo."; return(respuesta);
                    }

                    Token api_token = new Token()
                    {
                        login_clave = false
                    };
                    //var clave2 = Tools.GetSHA256(usuario_login.clave);
                    var clave2 = usuario_login.clave;
                    if (usuario.clave != clave2)
                    {
                        if (usuario.clave == usuario_login.clave && usuario.clave2 == null)
                        {
                            api_token.login_clave = false;
                        }
                        else
                        {
                            respuesta.mensaje = "Contraseña incorrecta."; return(respuesta);
                        }
                    }



                    var token = (from t in db.tbl_api_tokens
                                 where t.id_usuario == usuario.id &&
                                 t.estatus == 1
                                 select t).FirstOrDefault();

                    if (token != null)
                    {
                        token.estatus         = 0;
                        db.Entry(token).State = System.Data.Entity.EntityState.Modified;
                        if (db.SaveChanges() < 1)
                        {
                            respuesta.mensaje = "Su sesión previa no pudo ser cerrada."; return(respuesta);
                        }
                    }//if token !=null
                    string         token_string = Guid.NewGuid().ToString();
                    tbl_api_tokens new_token    = new tbl_api_tokens()
                    {
                        id_usuario     = usuario.id,
                        estatus        = 1,
                        nombre         = usuario.nombre.ToString(),
                        apellido       = usuario.apellido.ToString(),
                        fecha_registro = DateTime.Now,
                        id_centro      = usuario.id_centro,
                        token          = Tools.GetSHA256(token_string)
                    };

                    db.tbl_api_tokens.Add(new_token);
                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "No se pudo iniciar una nueva sesión.";
                        return(respuesta);
                    }
                    api_token.rol        = (int)usuario.id_rol;
                    api_token.usuario    = usuario.usuario;
                    api_token.id_usuario = (int)new_token.id_usuario;
                    api_token.nombre     = usuario.nombre;
                    api_token.apellido   = usuario.apellido;
                    api_token.token      = token_string;
                    api_token.id_centro  = (int)usuario.id_centro;

                    respuesta.mensaje   = "Inicio de sesión exitoso.";
                    respuesta.resultado = 1;
                    respuesta.data      = api_token;
                } //using
            }     //try
            catch (DbEntityValidationException ex)
            {
                respuesta.mensaje = "Errores econtrados.";
                List <Error> error_list = new List <Error>();
                foreach (var errors in ex.EntityValidationErrors)
                {
                    foreach (var error in errors.ValidationErrors)
                    {
                        // get the error message
                        error_list.Add(new Error(error.ErrorMessage));
                    } //inner foreach
                }     //foreach
                respuesta.data = error_list;
            }         //DbEntityValidationException ex
            catch (Exception e) { respuesta.mensaje = "Error, intente mas tarde."; respuesta.data = e; }



            try
            {
                using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["APIDB"].ConnectionString))
                {
                    connection.Open();
                    SqlTransaction transaction = connection.BeginTransaction();
                    SqlCommand     cmd         = new SqlCommand($"select * from tbl_usuarios where nombre={usuario_login.nombre };", connection, transaction);
                    cmd.CommandType = CommandType.Text;

                    //List<Template> templates = new List<Template>();
                    Template templateData = new Template();

                    using (var rdr = cmd.ExecuteReader())
                    {
                        rdr.Read();

                        //templateData = new Template
                        //{
                        //    id = GetNullable<int>(rdr, nameof(templateData.id)),
                        //    name = rdr[nameof(templateData.name)].ToString(),
                        //    description = rdr[nameof(templateData.description)].ToString(),
                        //    date_reg = GetNullable<DateTime>(rdr, nameof(templateData.date_reg)),
                        //    user_reg = rdr[nameof(templateData.user_reg)].ToString(),
                        //    status = GetNullable<int>(rdr, nameof(templateData.status)),
                        //    url = rdr[nameof(templateData.url)].ToString(),
                        //};

                        //templates.Add(templateData);


                        rdr.Close();
                        respuesta.resultado = 1;
                        respuesta.mensaje   = "Operación exitosa";

                        respuesta.data = templateData;
                    }
                }
            }
            catch (Exception ex)
            {
                respuesta.resultado = 0;
                respuesta.mensaje   = ex.Message;
                respuesta.data      = ex;
            }

            return(respuesta);
        }//login
        public Respuesta logout([FromBody] Token sesion)
        {
            Respuesta respuesta = new Respuesta(); respuesta.resultado = 0;

            try
            {
                using (MacEntities db = new MacEntities())
                {
                    var usuario = (from u in db.tbl_usuarios where u.usuario == sesion.usuario
                                   select u).FirstOrDefault();
                    if (usuario == null)
                    {
                        respuesta.mensaje = "Usuario no encontrado."; return(respuesta);
                    }

                    var encrypted_token = Tools.GetSHA256(sesion.token);
                    var token           = (from t in db.tbl_api_tokens
                                           where t.id_usuario == usuario.id &&
                                           t.estatus == 1 && t.token == encrypted_token
                                           select t).FirstOrDefault();

                    if (token == null)
                    {
                        respuesta.mensaje   = "Su sesión no pudo ser cerrada. Por seguridad se cerraron las sesiones abiertas.";
                        respuesta.resultado = -1;
                        var tokens = (from t in db.tbl_api_tokens
                                      where t.id_usuario == usuario.id &&
                                      t.estatus == 1
                                      select t).ToList();

                        foreach (tbl_api_tokens record in tokens)
                        {
                            record.estatus         = 0;
                            db.Entry(record).State = System.Data.Entity.EntityState.Modified;
                            if (db.SaveChanges() < 1)
                            {
                                respuesta.mensaje = "Hubo un error cerrando sesiones";
                            }
                        }
                    }//if token==null
                    else
                    {
                        token.estatus         = 0;
                        db.Entry(token).State = System.Data.Entity.EntityState.Modified;
                        if (db.SaveChanges() < 1)
                        {
                            respuesta.mensaje = "Hubo un error al cerrar su sesión"; return(respuesta);
                        }

                        respuesta.mensaje = "Su sesión fue cerrada exitosamente."; respuesta.resultado = 1;
                    }
                } //using
            }     //try
            catch (DbEntityValidationException ex)
            {
                respuesta.mensaje = "Errores econtrados.";
                List <Error> error_list = new List <Error>();
                foreach (var errors in ex.EntityValidationErrors)
                {
                    foreach (var error in errors.ValidationErrors)
                    {
                        // get the error message
                        error_list.Add(new Error(error.ErrorMessage));
                    } //inner foreach
                }     //foreach
                respuesta.data = error_list;
            }         //DbEntityValidationException ex
            catch (Exception e) { respuesta.mensaje = "Error, intente mas tarde."; respuesta.data = e; }

            return(respuesta);
        }//logout
        public Respuesta login([FromBody] Usuario usuario_login)
        {
            int       login_type = 2;
            Respuesta respuesta  = new Respuesta(); respuesta.resultado = 0;

            try
            {
                using (MacEntities db = new MacEntities())
                {
                    var usuario = (from u in db.tbl_usuarios
                                   where u.usuario == usuario_login.nombre_usuario
                                   select u).FirstOrDefault();
                    if (usuario == null)
                    {
                        respuesta.mensaje = "Usuario no encontrado."; return(respuesta);
                    }
                    if (!(bool)usuario.activo)
                    {
                        respuesta.mensaje = "Usuario inactivo."; return(respuesta);
                    }

                    Token api_token = new Token()
                    {
                        login_clave = false
                    };
                    //var clave2 = Tools.GetSHA256(usuario_login.clave);
                    var clave2 = usuario_login.clave;
                    if (usuario.clave != clave2)
                    {
                        if (usuario.clave == usuario_login.clave && usuario.clave2 == null)
                        {
                            api_token.login_clave = false;
                        }
                        else
                        {
                            respuesta.mensaje = "Contraseña incorrecta."; return(respuesta);
                        }
                    }



                    var token = (from t in db.tbl_api_tokens
                                 where t.id_usuario == usuario.id &&
                                 t.estatus == 1
                                 select t).FirstOrDefault();

                    if (token != null)
                    {
                        token.estatus         = 0;
                        db.Entry(token).State = System.Data.Entity.EntityState.Modified;
                        if (db.SaveChanges() < 1)
                        {
                            respuesta.mensaje = "Su sesión previa no pudo ser cerrada."; return(respuesta);
                        }
                    }//if token !=null
                    string         token_string = Guid.NewGuid().ToString();
                    tbl_api_tokens new_token    = new tbl_api_tokens()
                    {
                        id_usuario     = usuario.id,
                        estatus        = 1,
                        nombre         = usuario.nombre.ToString(),
                        apellido       = usuario.apellido.ToString(),
                        fecha_registro = DateTime.Now,
                        id_centro      = usuario.id_centro,
                        token          = Tools.GetSHA256(token_string)
                    };

                    db.tbl_api_tokens.Add(new_token);
                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "No se pudo iniciar una nueva sesión.";
                        return(respuesta);
                    }
                    api_token.rol        = (int)usuario.id_rol;
                    api_token.usuario    = usuario.usuario;
                    api_token.id_usuario = (int)new_token.id_usuario;
                    api_token.nombre     = usuario.nombre;
                    api_token.apellido   = usuario.apellido;
                    api_token.token      = token_string;
                    api_token.id_centro  = (int)usuario.id_centro;


                    var calendario =
                        (from ca in db.tbl_usuarios_calendarios
                         where ca.id_usuario == usuario.id
                         select ca).FirstOrDefault();

                    if (calendario.url_calendario == null || calendario.url_calendario == "" || calendario == null)
                    {
                        api_token.calendar = false;
                    }
                    else
                    {
                        api_token.calendar = true;
                    }


                    respuesta.mensaje   = "Inicio de sesión exitoso.";
                    respuesta.resultado = 1;
                    respuesta.data      = api_token;
                } //using
            }     //try
            catch (DbEntityValidationException ex)
            {
                respuesta.mensaje = "Errores econtrados.";
                List <Error> error_list = new List <Error>();
                foreach (var errors in ex.EntityValidationErrors)
                {
                    foreach (var error in errors.ValidationErrors)
                    {
                        // get the error message
                        error_list.Add(new Error(error.ErrorMessage));
                    } //inner foreach
                }     //foreach
                respuesta.data = error_list;
            }         //DbEntityValidationException ex
            catch (Exception e) { respuesta.mensaje = "Error, intente mas tarde."; respuesta.data = e; }

            return(respuesta);
        }//login
        public Respuesta update([FromBody] Tarea tarea_actualizada,
                                [FromUri] int id, [FromUri] int tarea_id)
        {
            Respuesta respuesta = new Respuesta(); respuesta.resultado = 0;

            respuesta.mensaje = Tools.VerifyToken(tarea_actualizada.sesion, Tools.crm_rol_id);
            if (respuesta.mensaje != "1")
            {
                return(respuesta);
            }

            try
            {
                using (MacEntities db = new MacEntities())
                {
                    var id_contacto = (from c in db.tbl_contactos
                                       where c.id == id
                                       select c.id).FirstOrDefault();

                    if (id_contacto == 0)
                    {
                        respuesta.mensaje = "Error, contacto no encontrado."; return(respuesta);
                    }

                    tbl_contactos_tareas tarea = db.tbl_contactos_tareas.Find(tarea_id);
                    if (tarea == null)
                    {
                        respuesta.mensaje = "Error, tarea no encontrada."; return(respuesta);
                    }
                    var estatus = false;

                    if (tarea_actualizada.solo_estado != null && tarea_actualizada.solo_estado == "1")
                    {
                        var primer_seguimiento_id = (from s in db.tbl_tareas_seguimientos
                                                     where s.id_tarea == tarea_id
                                                     select s.id_seguimiento).FirstOrDefault();
                        if (primer_seguimiento_id == 0)
                        {
                            respuesta.mensaje = "Error, seguimiento no encontrado."; return(respuesta);
                        }

                        tbl_contactos_seguimientos primer_seguimiento = db.tbl_contactos_seguimientos.Find(primer_seguimiento_id);
                        if (primer_seguimiento == null)
                        {
                            respuesta.mensaje = "Error, datos de seguimiento no encontrados."; return(respuesta);
                        }

                        var tipo_resultado1 = (from r1 in db.tbl_resultados
                                               where r1.nombre == "Finalizada"
                                               select r1.id).FirstOrDefault();

                        if (tipo_resultado1 == 0)
                        {
                            respuesta.mensaje = "Error, tipo de resultado de primer seguimiento no encontrado."; return(respuesta);
                        }
                        tarea.estatus = true;

                        primer_seguimiento.id_resultado = tipo_resultado1;

                        db.Entry(primer_seguimiento).State = System.Data.Entity.EntityState.Modified;

                        if (db.SaveChanges() < 1)
                        {
                            respuesta.mensaje = "Hubo un error con la actualizacion del primer seguimiento de la tarea.";
                            return(respuesta);
                        }

                        //seguimiento
                        var tipo_seguimiento = (from s in db.tbl_seguimientos
                                                where s.id == tarea_actualizada.seguimiento
                                                select s).FirstOrDefault();
                        if (tipo_seguimiento == null)
                        {
                            respuesta.mensaje = "Error, tipo de seguimiento no encontrado."; return(respuesta);
                        }


                        tbl_contactos_seguimientos seguimiento = new tbl_contactos_seguimientos();
                        var tipo_resultado = (from r in db.tbl_resultados
                                              where r.id == tarea_actualizada.resultado.id
                                              select r).FirstOrDefault();
                        if (tipo_resultado == null)
                        {
                            respuesta.mensaje = "Error, tipo de resulado no encontrado."; return(respuesta);
                        }

                        seguimiento.id_contacto    = id_contacto;
                        seguimiento.id_seguimiento = tarea_actualizada.seguimiento;
                        seguimiento.id_resultado   = tarea_actualizada.resultado.id;
                        seguimiento.fecha_registro = DateTime.Now;
                        seguimiento.fecha          = tarea.fecha_agenda;
                        seguimiento.fecha_fin      = tarea.fecha_fin;
                        seguimiento.observaciones  = tarea_actualizada.observaciones_seguimiento;

                        db.tbl_contactos_seguimientos.Add(seguimiento);
                        if (db.SaveChanges() < 1)
                        {
                            respuesta.mensaje = "Hubo un error con el registro del seguimiento.";
                            return(respuesta);
                        }

                        //Tarea seguimiento
                        tbl_tareas_seguimientos tarea_seguimiento = new tbl_tareas_seguimientos();
                        tarea_seguimiento.id_tarea       = tarea.id;
                        tarea_seguimiento.id_seguimiento = seguimiento.id;

                        db.tbl_tareas_seguimientos.Add(tarea_seguimiento);
                        if (db.SaveChanges() < 1)
                        {
                            respuesta.mensaje = "Hubo un error con el registro del seguimiento y la tarea.";
                            return(respuesta);
                        }
                    }
                    else
                    {
                        tarea.tarea          = tarea_actualizada.tarea;
                        tarea.fecha_agenda   = Tools.GetFullDateTimeObject(tarea_actualizada.fecha_agenda);
                        tarea.fecha_fin      = Tools.GetFullDateTimeObject(tarea_actualizada.fecha_fin);
                        tarea.id_seguimiento = tarea_actualizada.seguimiento.ToString();
                        estatus = false;
                        if (tarea_actualizada.estatus == "Completada")
                        {
                            estatus = true;
                            //seguimiento
                            var tipo_seguimiento = (from s in db.tbl_seguimientos
                                                    where s.id == tarea_actualizada.seguimiento
                                                    select s).FirstOrDefault();
                            if (tipo_seguimiento == null)
                            {
                                respuesta.mensaje = "Error, tipo de seguimiento no encontrado."; return(respuesta);
                            }
                            tbl_contactos_seguimientos seguimiento = new tbl_contactos_seguimientos();
                            var tipo_resultado = (from r in db.tbl_resultados
                                                  where r.id == tarea_actualizada.resultado.id
                                                  select r).FirstOrDefault();
                            if (tipo_resultado == null)
                            {
                                respuesta.mensaje = "Error, tipo de resulado no encontrado."; return(respuesta);
                            }
                            seguimiento.id_contacto    = id_contacto;
                            seguimiento.id_seguimiento = tarea_actualizada.seguimiento;
                            seguimiento.id_resultado   = tarea_actualizada.resultado.id;
                            seguimiento.fecha_registro = DateTime.Now;
                            seguimiento.fecha          = tarea.fecha_agenda;
                            seguimiento.fecha_fin      = tarea.fecha_fin;
                            seguimiento.observaciones  = "Se completo la tarea de " + tipo_seguimiento.nombre +
                                                         ", pautada para la fecha " + tarea.fecha_agenda.ToString() + ", teniendo como resultado: " + tipo_resultado.nombre;
                            db.tbl_contactos_seguimientos.Add(seguimiento);
                            if (db.SaveChanges() < 1)
                            {
                                respuesta.mensaje = "Hubo un error con el registro del seguimiento.";
                                return(respuesta);
                            }
                        }
                        tarea.estatus = estatus;
                    }
                    db.Entry(tarea).State = System.Data.Entity.EntityState.Modified;

                    if (db.SaveChanges() < 1)
                    {
                        respuesta.mensaje = "Hubo un error con la actualizacion de la tarea.";
                        return(respuesta);
                    }

                    var tareas = (from t in db.tbl_contactos_tareas
                                  where t.estatus == false && t.id_contacto == id_contacto
                                  select t).ToList();
                    Tarea cantidad_tarea = new Tarea();
                    cantidad_tarea.cantidad = tareas.Count + "";
                    respuesta.data          = cantidad_tarea;

                    respuesta.mensaje = "Tarea actualizada exitosamente."; respuesta.resultado = 1;
                } //using
            }     //try
            catch (DbEntityValidationException ex)
            {
                respuesta.mensaje = "Errores econtrados.";
                List <Error> error_list = new List <Error>();
                foreach (var errors in ex.EntityValidationErrors)
                {
                    foreach (var error in errors.ValidationErrors)
                    {
                        // get the error message
                        error_list.Add(new Error(error.ErrorMessage));
                    } //inner foreach
                }     //foreach
                respuesta.data = error_list;
            }         //DbEntityValidationException ex
            catch (Exception e) { respuesta.mensaje = "Error, intente mas tarde."; respuesta.data = e; }

            return(respuesta);
        }//update