using Org.BouncyCastle.Crypto;
using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using Ropin.Inspection.Repository.SYS.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Repository.SYS
{
    public class TsysMessageFileRepository : RepositoryBase<TSYS_MessageFile, string>, ITsysMessageFileRepository
    {
        public TsysMessageFileRepository(InspectionDbContext dbContext) : base(dbContext)
        {

        }
        /// <summary>
        /// IdList和messageCode值传一个
        /// </summary>
        /// <param name="IdList">根据多个ID删除</param>
        /// <param name="messageCode">根据消息ID删除</param>
        /// <returns></returns>
        public Task<bool> DeleteMultitByID(List<string> IdList,string messageCode)
        {
            MySqlConnector.MySqlParameter[] parameters = null;
            if (IdList!=null&& IdList.Count>0)
            {
                string idSre=string.Join("','", IdList);
                string sql = $" DELETE from TSYS_MessageFile  where C_ID in ('{idSre}') ";
                int iResult = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, sql, parameters);
                bool result = iResult > 0;
                return Task.FromResult(result);
            }
            else
            {
                parameters= new[] { new MySqlConnector.MySqlParameter("code", messageCode) };
                string sql = $" DELETE from TSYS_MessageFile  where C_MessageCode=@code; ";
                int iResult = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, sql, parameters);
                bool result = iResult > 0;
                return Task.FromResult(result);
            }
        }

        public Task<IEnumerable<MessageFileViewModel>> GetList(TsysMessageFileSearchModel searchModel)
        {
            MySqlConnector.MySqlParameter[] parameters = new[] {
                new MySqlConnector.MySqlParameter("Status", searchModel.C_Status),
                new MySqlConnector.MySqlParameter("id", searchModel.C_ID),
                new MySqlConnector.MySqlParameter("messageCode", searchModel.C_MessageCode)
            };
            StringBuilder sql = new StringBuilder();
            sql.Append(@" select * from TSYS_MessageFile ");
            if (!string.IsNullOrEmpty(searchModel.C_Status))
            {
                sql.Append(" where C_Status=@Status  ");
            }
            else
            {
                sql.Append(" where C_Status!='0' ");
            }

            if (!string.IsNullOrEmpty(searchModel.C_ID))
            {
                sql.Append(" and C_ID=@id ");
            }
            if (searchModel.C_MessageCode != null)
            {
                sql.Append("  and C_MessageCode=@messageCode  ");
            }
            sql.Append(" order by D_CreateOn desc ");
            IEnumerable<MessageFileViewModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<MessageFileViewModel>(DbContext.Database, sql.ToString(), parameters);
            searchModel.TotalCount = recordItemlist.First() != null ? recordItemlist.ToList().Count : 0;
            if (searchModel.TotalCount == 0)
            {
                recordItemlist = new List<MessageFileViewModel>();
            }
            return Task.FromResult(searchModel.IsPagination ? recordItemlist.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : recordItemlist);
        }
    }
}