public AnswerActivity AddLikeActivity(AnswerActivity answerActivity)
        {
            using (IDbConnection Db = _connection)
            {
                string sQuery = " from AnswerActivity where ActivityPerformedOn=@AP and ActivityBy=@AB and";
                if (answerActivity.Type == Activity.Like && Db.ExecuteScalar <long>("Select count(id)" + sQuery + " Type =1", new { AP = answerActivity.ActivityPerformedOn, AB = answerActivity.ActivityBy }) > 0)
                {
                    Db.Execute("delete from AnswerActivity where ActivityPerformedOn=@AP and ActivityBy=@AB and Type=1", new { AP = answerActivity.ActivityPerformedOn, AB = answerActivity.ActivityBy });
                    return(null);
                }
                else if (answerActivity.Type == Activity.Dislike && Db.ExecuteScalar <long>("Select count(id)" + sQuery + " Type =2", new { AP = answerActivity.ActivityPerformedOn, AB = answerActivity.ActivityBy }) > 0)
                {
                    Db.Execute("delete from AnswerActivity where ActivityPerformedOn=@AP and ActivityBy=@AB and Type=2", new { AP = answerActivity.ActivityPerformedOn, AB = answerActivity.ActivityBy });
                    return(null);
                }
                else
                {
                    if (answerActivity.Type == Activity.Like || answerActivity.Type == Activity.Dislike)
                    {
                        Db.Execute("delete from AnswerActivity where ActivityPerformedOn=@AP and ActivityBy=@AB and (Type=1 or Type=2)", new { AP = answerActivity.ActivityPerformedOn, AB = answerActivity.ActivityBy });
                    }

                    string sqlQuery = "Insert into AnswerActivity ( ActivityPerformedOn, ActivityBy , Type,ActivityOn) values(@ActivityPerformedOn, @ActivityBy,@Type,@ActivityOn)";
                    Db.Execute(sqlQuery, answerActivity.MapTo <Data.AnswerActivity>());
                    return(Db.Query <Data.AnswerActivity>("Select * from AnswerActivity where ActivityPerformedOn = @AP and Type =Type", new { AP = answerActivity.ActivityPerformedOn, Type = answerActivity.MapTo <Data.AnswerActivity>().Type }).FirstOrDefault().MapTo <AnswerActivity>());
                }
            }
        }
        public ActionResult <AnswerActivity> AddActivity(AnswerActivity answerActivity)
        {
            var result = (answerActivity.Type == Activity.Best) ?
                         _services.AddBestAnswerActivity(answerActivity) : _services.AddLikeActivity(answerActivity);

            if (result == null)
            {
                return(new AnswerActivity());
            }
            return(result);
        }
        public AnswerActivity AddBestAnswerActivity(AnswerActivity answerActivity)
        {
            using (IDbConnection Db = _connection)
            {
                if (Db.ExecuteScalar <long>("Select Count(id) from AnswerActivity where ActivityPerformedOn=@AP and Type=4", new { AP = answerActivity.ActivityPerformedOn }) > 0)
                {
                    Db.Execute("delete from AnswerActivity where ActivityPerformedOn=@AP and Type=4", new { AP = answerActivity.ActivityPerformedOn });
                    return(null);
                }
                else if (answerActivity.Type == Activity.Best)
                {
                    long activityId = Db.ExecuteScalar <long>("Select Id from AnswerActivity inner join (select Id as AnswerId from Answer where QuestionId = (Select QuestionId from Answer where Id = @AP)) as AllAnswers on AnswerActivity.ActivityPerformedOn = AnswerId where AnswerActivity.Type=4", new { AP = answerActivity.ActivityPerformedOn });
                    Db.Execute("delete from AnswerActivity where Id=@activityId", new { activityId });
                }

                string sqlQuery = "Insert into AnswerActivity ( ActivityPerformedOn, ActivityBy , Type, ActivityOn) values (@ActivityPerformedOn, @ActivityBy, @Type, @ActivityOn)";
                Db.Execute(sqlQuery, answerActivity.MapTo <Data.AnswerActivity>());
                return(Db.Query <Data.AnswerActivity>("Select * from AnswerActivity where ActivityPerformedOn = @AP and Type = 4", new { AP = answerActivity.ActivityPerformedOn }).FirstOrDefault().MapTo <AnswerActivity>());
            }
        }