public async Task <IActionResult> UpdateFavorites([FromBody] RelRouteUser data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var getFavStatus = _context.Favorites.Where(x => x.IdUser == data.IdUser && x.IdRoute == data.IdRoute).FirstOrDefault();

            if (getFavStatus != null)
            {
                getFavStatus.isFavorite = (getFavStatus.isFavorite) ? false : true;
                _context.Favorites.Update(getFavStatus);
            }
            else
            {
                getFavStatus            = new Favorites();
                getFavStatus.isFavorite = true;
                getFavStatus.IdUser     = data.IdUser;
                getFavStatus.IdRoute    = data.IdRoute;
                _context.Favorites.Add(getFavStatus);
            }
            await _context.SaveChangesAsync();

            return(Ok(getFavStatus.isFavorite));
        }
        public IActionResult GetStatiticsClicks([FromBody] RelRouteUser data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var routes = GetRoutesByUser(data.IdUser);

            if (routes != null)
            {
                var haveRoute = routes.Where(x => x.Id == data.IdRoute).FirstOrDefault();
                if (haveRoute != null)
                {
                    var totalVisits    = GetTotalVisitsUserCount(routes);
                    var selectedVisits = haveRoute.RouteVisit.Count();
                    totalVisits = (totalVisits > 0) ? totalVisits - selectedVisits : totalVisits;
                    List <Percentage> routeclicks = new List <Percentage>();
                    Percentage        addToList   = new Percentage();
                    addToList.name = "Otras";
                    addToList.y    = totalVisits;
                    routeclicks.Add(addToList);
                    addToList      = new Percentage();
                    addToList.name = "Seleccionada";
                    addToList.y    = selectedVisits;
                    routeclicks.Add(addToList);
                    return(Ok(routeclicks));
                }
                return(NotFound("El usuario no tiene acceso de administrador a ésta ruta."));
            }
            return(NotFound());
        }
        public async Task <IActionResult> PutRelRouteUser([FromRoute] int id, [FromBody] RelRouteUser relRouteUser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != relRouteUser.IdRelation)
            {
                return(BadRequest());
            }

            _context.Entry(relRouteUser).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RelRouteUserExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <ActionResult> SaveRelations(UsersRoute usersRoutes)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            List <RelRouteUser> relRouteUsers = _context.RelRouteUser.Where(x => x.IdRoute == usersRoutes.idRoute).ToList();

            if (relRouteUsers == null)
            {
                return(NotFound());
            }
            else
            {
                foreach (var rels in relRouteUsers)
                {
                    _context.RelRouteUser.Remove(rels);;
                }
            }

            foreach (var user in usersRoutes.relations)
            {
                var rel = new RelRouteUser {
                    IdRoute = usersRoutes.idRoute, IdUser = user.Id
                };
                _context.RelRouteUser.Add(rel);
            }

            await _context.SaveChangesAsync();

            return(Ok());
        }
        public async Task <IActionResult> PostRelRouteUser([FromBody] RelRouteUser relRouteUser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.RelRouteUser.Add(relRouteUser);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetRelRouteUser", new { id = relRouteUser.IdRelation }, relRouteUser));
        }