using Dapper; using SolarPower.Helper; using SolarPower.Models; using SolarPower.Repository.Interface; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; namespace SolarPower.Repository.Implement { public class OperationRepository : RepositoryBase, IOperationRepository { public OperationRepository(IDatabaseHelper databaseHelper) : base(databaseHelper) { tableName = "operation_plan_create"; } public async Task> GetPowerStationIdList(int UserId) { List result; using (IDbConnection conn = this._databaseHelper.GetConnection()) { try { var sql = @$"SELECT tn.Id AS Value, tn.Name AS Text FROM power_station tn LEFT JOIN power_station_operation_personnel pp ON tn.Id=pp.PowerStationId WHERE pp.UserId = @userid"; result = (await conn.QueryAsync(sql, new { userid = UserId })).ToList(); } catch (Exception exception) { throw exception; } return result; } } public async Task AddOperationPlan(OperationCreatePlan OperationPlan, List properties) { using (IDbConnection conn = _databaseHelper.GetConnection()) { conn.Open(); try { string sql = GenerateInsertQuery(properties); await conn.ExecuteAsync(sql, OperationPlan); } catch (Exception exception) { throw exception; } finally { conn.Close(); } } } public async Task> OperationPlanTable(List id) { List result; var count = 0; string Wheresql = "oc.PowerStationId = "; foreach (int too in id) { if(count == id.Count-1) { Wheresql += too.ToString(); } else { Wheresql += too.ToString() + " OR oc.PowerStationId = "; } count++; } using (IDbConnection conn = this._databaseHelper.GetConnection()) { try { var sql = @$"SELECT *,ps.Name AS PowerStationName ,us.Name AS CreatedPerson FROM operation_plan_create oc LEFT JOIN power_station ps ON oc.PowerStationId = ps.Id LEFT JOIN user us ON us.Id = oc.CreatedBy WHERE {Wheresql} AND oc.Deleted = 0"; result = (await conn.QueryAsync(sql)).ToList(); } catch (Exception exception) { throw exception; } return result; } } public async Task GetOneOperation(int id) { OperationCreatePlan result; using (IDbConnection conn = _databaseHelper.GetConnection()) { conn.Open(); try { var sql = @"SELECT * FROM operation_plan_create WHERE Deleted =0 AND Id = @Id"; result = await conn.QueryFirstOrDefaultAsync(sql, new { Id = id }); } catch (Exception exception) { throw exception; } finally { conn.Close(); } return result; } } } }