public JsonResult Like(long id)
        {
            var result = ORRepository.Get(id);

            if (result == null)
            {
                return(Json(new { Success = false, Error = "Не удалось найти результат" }));
            }

            // Получить текущего юзера
            var curUser = GetCurrentUser();

            var like = LikeRepository.IsFavoriteResult(curUser.Id, id);

            if (like != null)
            {
                LikeRepository.Delete(like);
                return(Json(new { Success = true, Name = "like" }));
            }

            // Создать лайк
            like = LikeRepository.Create();

            // Заполнить свойства
            like.UserId   = curUser.Id;
            like.ResultId = result.Id;

            // Сохранить
            LikeRepository.Update(like);

            // Вернуться к списку операций
            return(Json(new { Success = true, Name = "dislike" }));
        }
        public ActionResult Index()
        {
            var curUser = GetCurrentUser();

            var results = ORRepository.GetByUser(curUser);

            var likes = LikeRepository.GetByUser(curUser).Select(it => it.ResultId);

            foreach (var result in results)
            {
                result.IsLiked = likes.Contains(result.Id);
            }

            return(View(results));
        }
        public ActionResult Index()
        {
            var curUser = GetCurrentUser();

            var results = ORRepository.GetByUser(curUser);

            // var likes = LikeRepository.GetLikes(curUser.Id).Select(it => it.ResultId);

            var likes = LikeRepository.GetAll()              // получаем все лайки
                        .Where(u => u.User.Id == curUser.Id) // фильтруем по текущему юзеру
                        .Select(it => it.Result.Id);         // достаем из лайков результаты операций

            foreach (var result in results)
            {
                result.IsLiked = likes.Contains(result.Id);
            }
            return(View(results));
        }
        public ActionResult Index(CalcModel model)
        {
            model.OperationList = Calc.Operations
                                  .Select(o => new SelectListItem()
            {
                Text = $"{o.Name}", Value = $"{o.Name}", Selected = model.Operation == o.Name
            });

            var operation = Calc.Operations.FirstOrDefault(o => o.Name == model.Operation);

            if (operation != null)
            {
                var dbOper    = OperationRepository.GetByName(operation.Name);
                var operId    = dbOper.Id;
                var inputData = string.Join(",", model.Arguments);

                var oldResult = ORRepository.GetOldResult(operId, inputData);
                if (!double.IsNaN(oldResult))
                {
                    model.Result = oldResult;
                }
                else
                {
                    #region вычисление
                    model.Result = operation.Execute(model.Arguments);

                    var rec = ORRepository.Create();

                    //текущего пользователя назначаем автором
                    var currUser = UserRepository.GetByName(User.Identity.Name);
                    rec.Author        = currUser;
                    rec.Operation     = dbOper;
                    rec.ExecutionDate = DateTime.Now;
                    rec.ExecutionTime = new Random().Next(0, 100);
                    rec.InputData     = inputData;
                    rec.Result        = model.Result ?? Double.NaN;

                    ORRepository.Update(rec);
                    #endregion
                }
                return(View(model));
            }
            return(View());
        }
        public JsonResult Like(long id)
        {
            var result = ORRepository.Get(id);

            if (result == null)
            {
                return(Json(new { Success = false, Error = "Не удалось найти результат" }));
            }

            var curUser = GetCurrentUser();

            //var like = LikeRepository.GetLikes(curUser.Id)
            //    .FirstOrDefault(it => it.UserId == curUser.Id && it.ResultId == id);

            var like = LikeRepository.GetAll().FirstOrDefault(it => it.User.Id == curUser.Id && it.Result.Id == id);

            if (like != null)
            {
                //Dislike
                LikeRepository.Delete(like);
                return(Json(new { Success = true, Name = "Like" }));
            }

            // Создать лайк
            like = LikeRepository.Create();

            // Заполнить свойства
            like.User   = curUser;
            like.Result = result;

            // Сохранить
            LikeRepository.Update(like);

            // Вернуться к списку операций
            return(Json(new { Success = true, Name = "Dislike" }));
        }
        public ActionResult Favourite()
        {
            var curUser = GetCurrentUser();

            return(View(ORRepository.GetByUser(curUser)));
        }