public static async Task <AccessPointDetailList> AccessPointDetails(AccessPointData accesspointData) { var accesspointsList = _db.GetCollection <DBAccessPoint>("accesspoints"); var accesspointDetailList = _db.GetCollection <DBAccessPointDetail>("accesspointDetails"); var accessPoints = new List <string>(); switch (accesspointData.Type) { case AccessPointData.AccessPointType.ID: accessPoints = accesspointsList.Find(a => a.accesspointid.Equals(accesspointData.AccessPoint)).Select(x => x.accesspointid).ToList(); break; case AccessPointData.AccessPointType.TAG: accessPoints = accesspointsList.Find(a => a.tag.Equals(accesspointData.AccessPoint)).Select(x => x.accesspointid).ToList(); break; case AccessPointData.AccessPointType.NAME: accessPoints = accesspointsList.Find(a => a.name.Equals(accesspointData.AccessPoint)).Select(x => x.accesspointid).ToList(); break; case AccessPointData.AccessPointType.ALL: accessPoints = accesspointsList.FindAll().Select(x => x.accesspointid).ToList(); break; } var allDetails = accessPoints.Select(ap => accesspointDetailList.FindOne(x => x.accesspointid.Equals(ap))).ToList().Select(dbap => new AccessPointDetail { installationid = dbap.installationid, accesspointid = dbap.accesspointid, accesspointguid = dbap.accesspointguid, barcode = dbap.barcode, batterylevel = dbap.batterylevel, batterytype = dbap.batterytype, cameraurl = dbap.cameraurl, serial = dbap.serial, error = dbap.error, filllevel = dbap.filllevel, height = dbap.height, length = dbap.length, pictureurl = dbap.pictureurl, pointtype = dbap.pointtype, tag = dbap.tag, temperature = dbap.temperature, volume = dbap.volume, warning = dbap.warning, weight = dbap.weight, width = dbap.weight }).ToList(); var detailsList = new AccessPointDetailList(); detailsList.AccessPoints = allDetails; return(await Task.FromResult(detailsList)); }
public static async Task <AccessPointDetailList> CustomerAccessPoints(string customerKey) { var clients = _db.GetCollection <DBClient>("clients"); var details = _db.GetCollection <DBAccessPointDetail>("accesspointDetails"); var client = clients.Include(x => x.PrimaryAccessPoints).Include(x => x.Secondary1AccessPoints).Include(x => x.Secondary2AccessPoints).FindOne(x => x.Id.Equals(int.Parse(customerKey))); var allAccesspoints = client.PrimaryAccessPoints.Concat(client.Secondary1AccessPoints) .Concat(client.Secondary2AccessPoints).Select(x => x.accesspointid) .ToList(); var allDetails = allAccesspoints.Select(ap => details.FindOne(x => x.accesspointid.Equals(ap))).ToList().Select(dbap => new AccessPointDetail { installationid = dbap.installationid, accesspointid = dbap.accesspointid, accesspointguid = dbap.accesspointguid, barcode = dbap.barcode, batterylevel = dbap.batterylevel, batterytype = dbap.batterytype, cameraurl = dbap.cameraurl, serial = dbap.serial, error = dbap.error, filllevel = dbap.filllevel, height = dbap.height, length = dbap.length, pictureurl = dbap.pictureurl, pointtype = dbap.pointtype, tag = dbap.tag, temperature = dbap.temperature, volume = dbap.volume, warning = dbap.warning, weight = dbap.weight, width = dbap.weight }).ToList(); var detailsList = new AccessPointDetailList { AccessPoints = allDetails }; return(await Task.FromResult(detailsList)); }