using Ropin.Inspection.Model;
using Ropin.Inspection.Model.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Repository
{
    public class TdevDevStoreMigrateRepository : RepositoryBase<TDEV_DevStoreMigrate, string>, ITdevDevStoreMigrateRepository
    {
        public TdevDevStoreMigrateRepository(InspectionDbContext DbContext) : base(DbContext)
        {

        }
        public Task<IEnumerable<TdevDevStoreMigrateViewModel>> GetDevStoreMigrateList(TdevDevStoreMigrateSearchModel searchModel) 
        {
            StringBuilder sql = new StringBuilder();
            MySqlConnector.MySqlParameter[] parameters = new[] {
                new MySqlConnector.MySqlParameter("DevStoreCode", searchModel.C_DevStoreCode),
                new MySqlConnector.MySqlParameter("Id", searchModel.C_ID),
                new MySqlConnector.MySqlParameter("Name", searchModel.C_Name),
                new MySqlConnector.MySqlParameter("CurrentStoreCode",searchModel.C_CurrentStoreCode),
                new MySqlConnector.MySqlParameter("LastStoreCode",searchModel.C_LastStoreCode),
            };
        sql.Append(@" select A.*,B.C_NumberCode,C.C_Name as C_LastStoreName,D.C_Name as C_CurrentStoreName,U.C_Name as C_UserName
from TDEV_DevStoreMigrate A 
LEFT JOIN TDEV_DevStore B on A.C_DevStoreCode=B.C_ID
LEFT JOIN TPNT_Store C on A.C_LastStoreCode=C.C_Code
LEFT JOIN TPNT_Store D on A.C_CurrentStoreCode=D.C_Code 
LEFT JOIN TSYS_User U on A.C_CreateBy=U.C_UserID
WHERE A.C_DevStoreCode=@DevStoreCode ");
            if (!string.IsNullOrEmpty(searchModel.C_ID))
            {
                sql.Append(" AND A.C_ID=@Id ");
            }
            if (!string.IsNullOrEmpty(searchModel.C_Name))
            {
                sql.Append(" AND A.C_Name=@Name ");
            }
            if (!string.IsNullOrEmpty(searchModel.C_CurrentStoreCode))
            {
                sql.Append(" AND A.C_CurrentStoreCode=@CurrentStoreCode ");
            }
            if (!string.IsNullOrEmpty(searchModel.C_LastStoreCode))
            {
                sql.Append(" AND A.C_LastStoreCode=@LastStoreCode ");
            }
            sql.Append(" order by A.D_CreateOn desc ");
            IEnumerable<TdevDevStoreMigrateViewModel> model = EntityFrameworkCoreExtensions.SqlQuery<TdevDevStoreMigrateViewModel>(DbContext.Database, sql.ToString(), parameters).ToList();
            return Task.FromResult(model);
        }
}
}