Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }