using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Service;
using Domain;
using CommonEntity;
using Common;
namespace WebSite.Controllers
{
public class HostModalController : BaseController
{
public IHostManager HostManager { get; set; }
public IHostModalManager HostModalManager { get; set; }
public IRoomTypeModalManager RoomTypeModalManager { get; set; }
public IRoomTypeChannelsManager RoomTypeChannelsManager { get; set; }
#region Action
public ActionResult Index()
{
return View();
}
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(HostModalController));
///
/// 加载回路
///
///
///
[Authorize]
public ActionResult LoadHostModals(int hostID)
{
try
{
var host = HostManager.Get(hostID);
var list1 = HostModalManager.LoadByHostID(hostID);
if (list1.ToList().Count == 0)//如果没有回路,则根据所属房型,新建回路
{
if (UpdateHostModals(host))
{
list1 = HostModalManager.LoadByHostID(hostID);
}
}
var list = list1.Where(r => r.Modal.ActiveIndicator).OrderBy(r => r.Modal.ModalAddress);//只装置标志启动的
var channelList = RoomTypeChannelsManager.LoadAll(host.RoomType.ID);//获取该主机电视频道
string strChannels = Newtonsoft.Json.JsonConvert.SerializeObject(channelList.Select(r => new { Code = r.Code, Name = r.Name }));
//var result = list.Select(r => new
//{
// HostID = r.HostID,
// ModalID = r.Modal.ID,
// r.Modal.Outlet,
// Name = ReturnNameByLanguage(r.Modal.Name, r.Modal.EnglishName, r.Modal.TWName),//(Language == Domain.Language.CN ? r.Modal.Name : r.Modal.EnglishName),
// r.Modal.ModalAddress,
// Type = r.Modal.Type.ToString(),
// TypeName = HttpContext.InnerLanguage(r.Modal.Type.ToString()),
// Status = r.Status,
// r.Brightness,
// r.CurrentTemp,
// r.SettingTemp,
// r.FanSpeed,
// r.Mode,
// r.Valve,
// Channels = strChannels
// //+ (r.Status == 1 ?
// //Convert.ToInt32((DateTime.Now - HostModalRecordManager.GetLastHostModalRecord(r.HostID, r.Modal.ID).StartTime).TotalMinutes) : 0)//如果当前灯光处于开的状态,计算截止到当前开的时长
//});
var result = list.Select(r => new ResultData()
{
HostID = r.HostID,
ModalID = r.Modal.ID,
Outlet= r.Modal.Outlet,
Name = ReturnNameByLanguage(r.Modal.Name, r.Modal.EnglishName, r.Modal.TWName),//(Language == Domain.Language.CN ? r.Modal.Name : r.Modal.EnglishName),
ModalAddress= r.Modal.ModalAddress,
Type = r.Modal.Type.ToString(),
TypeName = HttpContext.InnerLanguage(r.Modal.Type.ToString()),
Status = r.Status,
Brightness= r.Brightness,
CurrentTemp= r.CurrentTemp,
SettingTemp= r.SettingTemp,
FanSpeed= r.FanSpeed,
Mode= r.Mode,
Valve= r.Valve,
Channels = strChannels
}).ToList();
foreach (var item in result)
{
string KKey = CacheKey.HostModalStatus_Prefix + "_" + item.HostID + "_" + item.ModalAddress;
var hostModal = CSRedisCacheHelper.Get_Partition(KKey);
if (hostModal != null)
{
item.Status = hostModal.Status;
item.Brightness = hostModal.Brightness;
var aaa = hostModal.AirConditionData;
item.CurrentTemp = aaa.CurrentTemp;
item.SettingTemp = aaa.SettingTemp;
item.FanSpeed = aaa.FanSpeed;
item.Mode = aaa.Mode;
item.Valve = aaa.Valve;
}
}
return Json(new { total = result.Count(), rows = result });
}
catch (Exception ex)
{
return Json(new { IsSuccess = false, Message = HttpContext.InnerLanguage("LoadDataFailedBecause") + ex.Message });
}
}
private bool UpdateHostModals(Host host)
{
if (host == null)
{
return false;
}
HostModalManager.DeteleByHostID(host.ID);
var list = RoomTypeModalManager.LoadAll().Where(r => r.RoomType == host.RoomType);
DateTime now = DateTime.Now;
foreach (var modal in list)
{
HostModalManager.Save(new HostModal { HostID = host.ID, Modal = modal, Status = 2, Time = 0, UpdateTime = now });
}
return true;
}
#endregion
public class ResultData
{
public int HostID { get; set; }
public int ModalID;
public string Outlet;
public string Name; //(Language == Domain.Language.CN ? r.Modal.Name : r.Modal.EnglishName),
public string ModalAddress;
public string Type;
public string TypeName;
public int Status;
public int Brightness;
public int CurrentTemp;
public int SettingTemp;
public int FanSpeed;
public int Mode;
public int Valve;
public string Channels;
}
}
}