using Cksoft.Data;
using Cksoft.Unity;
using DllEapEntity;
using DllEapEntity.Dtos;
using DllEapEntity.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DllEapDal
{
///
/// FAQ
///
public class FrequentlyAskedQuestionDal
{
private readonly IDatabase CurrDb = null;
public FrequentlyAskedQuestionDal(IDatabase db)
{
CurrDb = db;
}
///
/// /
///
///
///
///
///
///
public async Task> Get(string question,
EnumQuestionVisableRange? visableRange, int pageIndex, int pageSize)
{
string errorinfo = string.Empty;
var filter = string.Empty;
if (!string.IsNullOrEmpty(question))
{
filter += $" and a.Question like '%{question}%'";
}
if (visableRange.HasValue)
{
filter += $" and a.VisableRange={visableRange}";
}
var datas = await CurrDb.FindListForConditionAsync(
$"{filter} order by id desc limit {(pageIndex - 1) * pageSize},{pageSize}",
ref errorinfo);
var sql = $"select count(1) from FrequentlyAskedQuestion a where 1=1 {filter}";
var count = Convert.ToInt32(CurrDb.FindListAsync(sql, null).Result
.FirstOrDefault() ?? "0");
return new LayuiModel
{
code = 1,
count = count,
data = datas
};
}
///
/// 详情
///
///
///
public async Task Get(int id)
{
var data = CurrDb.FindEntityFor(id);
await Task.CompletedTask;
return data;
}
///
/// 新增
///
///
///
public async Task Add(FrequentlyAskedQuestionAdd question)
{
var res = CurrDb.InsertFor(question, question.RecCode);
await Task.CompletedTask;
return new EapResponse { Code = 1 };
}
///
/// 修改
///
///
///
public async Task Update(FrequentlyAskedQuestionAdd question)
{
var exist = CurrDb.FindEntityFor(question.Id);
exist.Question = question.Question;
exist.Answer = question.Answer;
CurrDb.UpdateFor(exist, question.ModCode);
await Task.CompletedTask;
return new EapResponse { Code = 1 };
}
///
/// 删除
///
///
///
public async Task Delete(int id)
{
int m = CurrDb.DeleteFor(id);
await Task.CompletedTask;
if (m==0)
{
return new EapResponse { Code = 0, Msg = "删除失败" };
}
else
{
return new EapResponse { Code = 1, Msg = "删除成功" };
}
}
///
/// 获取FAQ点踩汇总
///
///
///
///
public async Task GetFAQEvaluation(int questionId, string staffCode)
{
string errorinfo = string.Empty;
var sql = $"select count(1) from FrequentlyAskedQuestionEvaluation where " +
$"questionId={questionId}";
var usefulCount = Convert.ToInt32(CurrDb.FindObject(sql + $" and GradeCategory={EnumQuestionEvaluationCategory.Useful}"));
var uselessCount = Convert.ToInt32(CurrDb.FindObject(sql + $" and GradeCategory={EnumQuestionEvaluationCategory.Useless}"));
var currentUserEvaluation = (await CurrDb.FindListForConditionAsync
($" and a.questionId={questionId} and a.staffCode='{staffCode}'", ref errorinfo)).FirstOrDefault();
return new FAQEvaluationDto
{
QuestionId = questionId,
Evaluation = currentUserEvaluation,
UsefullCount = usefulCount,
UselessCount = uselessCount
};
}
///
/// 评价
///
///
///
public async Task Evaluate(FrequentlyAskedQuestionEvaluation evaluation)
{
string errorinfo = string.Empty;
var question = CurrDb.FindEntityFor(evaluation.QuestionId);
var exist = (await CurrDb.FindListForConditionAsync($"" +
$" and a.questionId={question.Id} and a.staffcode='{evaluation.StaffCode}'",
ref errorinfo)).FirstOrDefault();
if (exist != null)
{
CurrDb.DeleteFor(exist.Id);
if(exist.GradeCategory== EnumQuestionEvaluationCategory.Useful)
{
question.Usefuls -= 1;
}
else
{
question.Useless -= 1;
}
}
CurrDb.InsertFor(evaluation, evaluation.StaffCode);
if (evaluation.GradeCategory == EnumQuestionEvaluationCategory.Useful)
{
question.Usefuls += 1;
}
else
{
question.Useless += 1;
}
CurrDb.UpdateFor(question, question.ModCode);
return new EapResponse { Code = 1 };
}
}
}