using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using Ropin.Inspection.Model.ViewModel.DEV;
using Ropin.Inspection.Model.ViewModel.SYS;
using Ropin.Inspection.Repository.Interface;
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 sysRoleHandRepository : RepositoryBase<TSYS_RoleHand, Guid>, IsysRoleHandRepository
    {
        public sysRoleHandRepository(InspectionDbContext dbContext) : base(dbContext)
        {

        }
        public async Task CreateRoleHandAsync(TSYS_RoleHand entity)
        {
            await DbContext.Set<TSYS_RoleHand>().AddAsync(entity);
        }
        public Task<bool> DeleteByRoleIdAsync(Guid roleId)
        {
            MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("roleId", roleId) };
            string sql = "DELETE FROM TSYS_RoleHand where C_RoleCode = @roleId";
            int iResult = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, sql, parameters);
            var result= iResult>0?true:false;
            return Task.FromResult(result);
        }
        public Task<bool> DeleteRoleHandAsync(Guid roleId,Guid handCode)
        {
            MySqlConnector.MySqlParameter[] parameters = new[] { 
                new MySqlConnector.MySqlParameter("roleId", roleId), 
                new MySqlConnector.MySqlParameter("handId", handCode) 
            };
            string sql = "DELETE FROM TSYS_RoleHand where C_RoleCode = @roleId and C_HandCode=@handId";
            int iResult = EntityFrameworkCoreExtensions.ExecuteSqlNoQuery(DbContext.Database, sql, parameters);
            var result = iResult > 0 ? true : false;
            return Task.FromResult(result);
        }
        public Task<IEnumerable<TSYSRoleHandModel>> GetList(Guid roleId)
        {
            MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("roleId", roleId) };
            string sql = @" select rh.*,r.C_Name as C_RoleName,dh.C_Name as C_HandName,dh.C_HandNo,dh.C_MachineCode,dh.C_Marker
from TSYS_RoleHand rh 
LEFT JOIN TDEV_Hand dh on (rh.C_HandCode=dh.C_ID)
LEFT JOIN TSYS_Role r on (rh.C_RoleCode=r.C_Code) where rh.C_RoleCode=@roleId ";
            IEnumerable<TSYSRoleHandModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<TSYSRoleHandModel>(DbContext.Database, sql.ToString(), parameters);
            return Task.FromResult(recordItemlist);
        }
    }
}