private static void SendStudentInfoResult(StudentInfoResult result, Connection con) { var dev = AndroidDevice.Cache.FirstOrDefault( d => d.IP == ((IPEndPoint)con.ConnectionInfo.RemoteEndPoint).Address.ToString()); //Maybe do not ignore this on production if (dev == null) { return; } var ip = new IPEndPoint(IPAddress.Parse(dev.IP), dev.Port); result.Send(ip); }
private async Task <StudentInfoResult> _GetStudentInfo(string studentId, string password) { if (Server == null) { await FindServer(); } if (Server == null) { return(null); } var request = new StudentInfoRequest() { StudentId = studentId, Password = password }; StudentInfoResult result = null; NetworkComms.AppendGlobalIncomingPacketHandler <StudentInfoResult>(StudentInfoResult.GetHeader(), (h, c, res) => { NetworkComms.RemoveGlobalIncomingPacketHandler(StudentInfoResult.GetHeader()); result = res; if (result?.Success ?? false) { CurrentStudent = res.Student; RequestStatus = res.RequestStatus; } }); await request.Send(new IPEndPoint(IPAddress.Parse(Server.IP), Server.Port)); var start = DateTime.Now; while ((DateTime.Now - start).TotalSeconds < 17) { if (result != null) { return(result); } await Task.Delay(TimeSpan.FromSeconds(1)); } Server = null; NetworkComms.RemoveGlobalIncomingPacketHandler(StudentInfoResult.GetHeader()); return(null); }
public static void StudentInfoRequested(PacketHeader packetheader, Connection connection, StudentInfoRequest incomingobject) { var result = new StudentInfoResult(); if (string.IsNullOrWhiteSpace(incomingobject.StudentId)) { return; } var student = Models.Student.Cache.FirstOrDefault(x => x.StudentId?.ToLower() == incomingobject.StudentId?.ToLower()); if (student == null) { result.Success = false; result.ErrorMessage = "Student ID does not exists. Please check and try again."; SendStudentInfoResult(result, connection); return; } if (string.IsNullOrEmpty(student.Password)) { student.Password = incomingobject.Password; } if (student.Password != incomingobject.Password) { result.Success = false; result.ErrorMessage = "Invalid password. Please try again."; SendStudentInfoResult(result, connection); return; } result.Success = true; result.Student = new Student() { Course = student.Course.Acronym, FirstName = student.FirstName, Id = student.Id, LastName = student.LastName, Picture = student.Picture, StudentId = student.StudentId, BirthDate = student.BirthDate, Male = student.Sex == Sexes.Male, Address = student.Address, Major = student.Major, Minor = student.Minor, Scholarship = student.Scholarship, }; var req = Models.Request.Cache.FirstOrDefault(x => x.StudentId.ToLower() == incomingobject.StudentId.ToLower()); if (req != null) { result.RequestStatus = new RequestStatus() { Id = req.Id, IsSubmitted = req.Submitted, QueueNumber = req.GetQueueNumber(), Receipt = req.ReceiptNumber }; } SendStudentInfoResult(result, connection); }