示例#1
0
        ////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);
        }
示例#2
0
        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);
        }