////20150416 building occupancy public List <BuildingOccupancyModel> GetListOccupancy() { string path = HostingEnvironment.MapPath(@"~/SQL/config.xml"); List <BuildingOccupancyModel> listMasterPoint = new List <BuildingOccupancyModel>(); XElement xelement = XElement.Load(path); IEnumerable <XElement> MasterPointModels = xelement.Elements(); foreach (var item in MasterPointModels) { BuildingOccupancyModel model = new BuildingOccupancyModel(); model.ID = item.Element("ID").Value; model.AreaName = item.Element("AreaName").Value; model.LocationName = item.Element("LocationName").Value; model.InDeviceList = item.Element("InDeviceList").Value; model.OutDeviceList = item.Element("OutDeviceList").Value; BuildingOccupancyModel mdl = GetInformationBuildingOccupancy(model); model.InsideCount = mdl.PeopleList.Count(); model.EmployeeCount = mdl.EmployeeCount; model.GuestCount = mdl.GuestCount; model.PeopleList = mdl.PeopleList; listMasterPoint.Add(model); } return(listMasterPoint); }
public BuildingOccupancyModel GetInformationBuildingOccupancy(BuildingOccupancyModel model) { IEnumerable <TransactionModel> TransactionData = Connection.Instance.Fetch <TransactionModel>("GetTransactionData", new { InDevice = model.InDeviceList, OutDevice = model.OutDeviceList }); String LastTransactionData = ""; List <string> listInside = new List <string>(); bool alreadyOut = false; foreach (TransactionModel item in TransactionData) { if (!item.TrData.Equals(LastTransactionData)) { alreadyOut = true; LastTransactionData = item.TrData; if (item.TrCode.Equals("0")) { listInside.Add(item.TrData); alreadyOut = false; } } else { if (item.TrCode.Equals("9")) { listInside.Remove(item.TrData); alreadyOut = true; } else if (alreadyOut) { listInside.Add(item.TrData); alreadyOut = false; } } } List <PeopleModel> listPeople = new List <PeopleModel>(); foreach (var item in TransactionData.OrderBy(y => y.TrData).ThenByDescending(m => m.TrDate).ThenByDescending(k => k.TrTime)) { if (listInside.Contains(item.TrData)) { PeopleModel people = new PeopleModel(); people.Seq = item.SeqNo; people.TrData = item.TrData; people.Name = item.Name; people.Divisi = item.Divisi.Trim(); people.Jabatan = item.Jabatan.Trim(); people.isAtAssemblyPoint = !string.IsNullOrEmpty(item.DataAssembly); if (!listPeople.Any(p => p.TrData == item.TrData)) { listPeople.Add(people); } } } ; BuildingOccupancyModel ret = new BuildingOccupancyModel(); //ret.EmployeeCount = listPeople.Where(a => a.Divisi != "No Division").Count(); //ret.GuestCount = listPeople.Where(a => a.Divisi == "No Division").Count(); ret.EmployeeCount = listPeople.Where(a => a.Name != "GUEST").Count(); ret.GuestCount = listPeople.Where(a => a.Name == "GUEST").Count(); ret.PeopleList = listPeople.OrderByDescending(a => a.Seq).ToList(); return(ret); }