/////// people history public IEnumerable <PeopleHistory> GetPeopleHistory(MasterPointModel model) { /////get people inside 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.TimeIn = item.TrTime; if (!listPeople.Any(p => p.TrData == item.TrData)) { listPeople.Add(people); } } } ; List <PeopleHistory> peopleInside = new List <PeopleHistory>(); foreach (var item in listPeople) { PeopleHistory people = new PeopleHistory(); people.TrData = item.TrData; people.Divisi = item.Divisi; people.Name = item.Name; people.TimeIn = item.TimeIn; people.TimeOut = item.TimeOut; peopleInside.Add(people); } IEnumerable <PeopleHistory> PeopleHistory = Connection.Instance.Fetch <PeopleHistory>("GetPeopleHistory", new { InDevice = model.InDeviceList, OutDevice = model.OutDeviceList }); PeopleHistory = PeopleHistory.Except(peopleInside, new PersonComparer()); IEnumerable <PeopleHistory> totalPeople = peopleInside.OrderByDescending(m => m.TimeIn).Union(PeopleHistory, new PersonComparer()); //List<PeopleHistory> totalPeople = (List<PeopleHistory>)PeopleHistory.Union(peopleInside, new PersonComparer()); return(totalPeople); }
public MasterPointModel GetInformation(MasterPointModel model) { //new for last in last out IEnumerable <LastInLastOut> LastInLastOut = Connection.Instance.Fetch <LastInLastOut>("GetLastInLastOut", new { InDevice = model.InDeviceList, OutDevice = model.OutDeviceList }); //List<TransactionModel> listTransactionModel = new List<TransactionModel>(); 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.TimeIn = item.TrTime; if (!listPeople.Any(p => p.TrData == item.TrData)) { listPeople.Add(people); } } } ; var groupedPeopleByDivisi = from b in listPeople.AsEnumerable() group b by b.Divisi into g select new { Group = g.Key, GroupCount = g.Count() }; List <GroupModel> groupByDiv = new List <GroupModel>(); foreach (var item in groupedPeopleByDivisi) { GroupModel grpMdl = new GroupModel(); grpMdl.Group = item.Group; grpMdl.GroupCount = item.GroupCount; groupByDiv.Add(grpMdl); } var groupedPeopleByJabatan = from b in listPeople.AsEnumerable() group b by b.Jabatan into g select new { Group = g.Key, GroupCount = g.Count() }; List <GroupModel> groupByJab = new List <GroupModel>(); foreach (var item in groupedPeopleByJabatan) { GroupModel grpMdl = new GroupModel(); grpMdl.Group = item.Group; grpMdl.GroupCount = item.GroupCount; groupByJab.Add(grpMdl); } MasterPointModel ret = new MasterPointModel(); ret.GroupModelListByDiv = groupByDiv; ret.GroupModelListByJab = groupByJab; ret.PeopleList = listPeople.OrderByDescending(a => a.Seq).ToList(); if (LastInLastOut != null && LastInLastOut.Count() > 0) { LastInLastOut lilo = LastInLastOut.FirstOrDefault(); ret.LastIn = lilo.LastIn; ret.LastOut = lilo.LastOut; } return(ret); }
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); }