using Ropin.Inspection.Model.Entities;
using Ropin.Inspection.Model.ViewModel.DEV;
using Ropin.Inspection.Repository.DEV.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ropin.Inspection.Repository.DEV
{
    public class dev_DevBoxMigrateRepository : RepositoryBase<TDEV_DevBoxMigrate, string>, Idev_DevBoxMigrateRepository
    {
        public dev_DevBoxMigrateRepository(InspectionDbContext DbContext) : base(DbContext)
        {
        }
        public Task<IEnumerable<dev_DevBoxMigrateModel>> GetConditionAsync(dev_DevBoxMigrateSearchModel searchModel)
        {
            MySqlConnector.MySqlParameter[] parameters = new[] {
                new MySqlConnector.MySqlParameter("devBoxCode", searchModel.C_DevBoxCode)
            };
            StringBuilder sql = new StringBuilder();
            sql.Append(@"select d.C_ID,d.C_Name,d.C_DevBoxCode,
b.C_Name as C_DevBoxName,b.C_BoxNo,
d.C_LastStoreCode,s.C_Name as C_LastStoreName,
d.C_CurrentStoreCode,store.C_Name as C_CurrentStoreName,
d.C_Remark,d.C_CreateBy,d.D_CreateOn
from TDEV_DevBoxMigrate d 
LEFT JOIN TDEV_Box b on (d.C_DevBoxCode=b.C_ID)
LEFT JOIN TPNT_Store s on (d.C_LastStoreCode=s.C_Code)
LEFT JOIN TPNT_Store store on (d.C_CurrentStoreCode=store.C_Code)
where d.C_DevBoxCode=@devBoxCode order by d.D_CreateOn desc ");
            IEnumerable<dev_DevBoxMigrateModel> recordItemlist = EntityFrameworkCoreExtensions.GetList<dev_DevBoxMigrateModel>(DbContext.Database, sql.ToString(), parameters);
            searchModel.TotalCount = recordItemlist.First() != null ? recordItemlist.ToList().Count : 0;
            return Task.FromResult(searchModel.IsPagination ? recordItemlist.Skip((searchModel.PageIndex - 1) * searchModel.PageSize).Take(searchModel.PageSize) : recordItemlist);
        }
    }
}