Пример #1
0
        protected override async void OnAppearing()
        {
            busyindicator.IsVisible = true;
            if (App.CheckConnection())
            {
                if (await App.userExists(App.UserUID))
                {
                    ready = false;
                    base.OnAppearing();
                    List <Mark> listMarks  = new List <Mark>();
                    bool        connection = true;
                    try
                    {
                        listMarks = await fireBaseHelperMark.GetMarksForSubject(_subject.SubjectID);
                        await status_bars();

                        double remCA = await fireBaseHelperSubject.remainigCA(_subject.SubjectID);

                        remainingCA.Text        = remCA.ToString("F2") + "%";
                        busyindicator.IsVisible = false;
                    }
                    catch (Exception)
                    {
                        connection = false;
                    }
                    if (connection)
                    {
                        subjectMark = new SubjectMark(_subject, listMarks);
                        if (listMarks.Count == 0)
                        {
                            results_text.IsVisible = true;
                        }
                        else
                        {
                            results_text.IsVisible = false;
                        }
                        this.BindingContext = subjectMark; //!!!
                        ready = true;
                    }
                    else
                    {
                        busyindicator.IsVisible = false;
                        await Navigation.PushAsync(new NoInternetConnectionPage("notApp"));
                    }
                }
                else
                {
                    busyindicator.IsVisible = true;
                    await DisplayAlert("Something went wrong...", "", "OK");

                    App.Current.MainPage = new NavigationPage(new LogIn());
                }
            }
            else
            {
                busyindicator.IsVisible = true;
                await Navigation.PushAsync(new NoInternetConnectionPage("notApp"));
            }
        }
Пример #2
0
        public bool Add(SubjectMarkDto dto)
        {
            if (dto == null)
            {
                return(false);
            }

            if (dto.Marks == null)
            {
                return(false);
            }

            if (CheckEndMarkFromDto(dto) == false)
            {
                return(false);
            }

            try
            {
                var subjectMarks = new List <SubjectMark>();

                foreach (MarkDto mark in dto.Marks)
                {
                    if (mark.TypeMarkId == 4)
                    {
                        if (CheckEndMarkFromDb(mark.StudentId, dto.SubjectId) == true)
                        {
                            return(false);
                        }
                    }
                    var subjectMark = new SubjectMark()
                    {
                        SubjectId  = dto.SubjectId,
                        SemesterId = dto.SemesterId,
                        StudentId  = mark.StudentId,
                        TypeMarkId = mark.TypeMarkId,
                        Mark       = mark.Mark
                    };

                    subjectMarks.Add(subjectMark);
                }

                db.SubjectMarks.AddRange(subjectMarks);
                db.SaveChanges();
            }
            catch
            {
                return(false);
            }

            return(true);
        }
        public IList <StudentWithGroupViewModel> Get()
        {
            var students = new List <StudentWithGroup>();

            var groupsForFaculty = Framework.GroupManager.GetListForFaculty(Framework.UserContext.User.FacultyId);

            foreach (var group in groupsForFaculty)
            {
                var student = Framework.StudentWithGroupManager.GetByGroupId(group.Id);
                students.AddRange(student);
            }

            var subjects = Framework.SubjectManager.GetForFaculty(Framework.UserContext.User.FacultyId).OrderBy(s => s.ShortName).ToList();

            for (int i = 0; i < students.Count; i++)
            {
                if (students[i].SubjectMarks.Count != subjects.Count)
                {
                    var subjectMarksForStudent = new List <SubjectMark>();
                    for (int j = 0; j < subjects.Count; j++)
                    {
                        bool check = false;
                        if (students[i].SubjectMarks.Count != 0)
                        {
                            foreach (var mark in students[i].SubjectMarks)
                            {
                                if (mark.SubjectId == subjects[j].Id)
                                {
                                    subjectMarksForStudent.Add(mark);
                                    check = true;
                                }
                            }
                        }
                        if (!check)
                        {
                            var newSubjectMark = new SubjectMark();
                            newSubjectMark.StudentId = students[i].Id;
                            newSubjectMark.SubjectId = subjects[j].Id;
                            newSubjectMark.Value     = null;
                            subjectMarksForStudent.Add(newSubjectMark);
                        }
                    }
                    students[i].SubjectMarks = subjectMarksForStudent;
                }
            }

            IList <StudentWithGroup> sortedStudents = students.OrderBy(s => s.LastName).ToList();
            var result = Mapper.Map <IList <StudentWithGroupViewModel> >(sortedStudents);

            return(result);
        }
Пример #4
0
        protected override async void OnAppearing()
        {
            base.OnAppearing();

            List <Mark> listMarks = await fireBaseHelperMark.GetMarksForSubject(_subject.SubjectID);

            subjectMark = new SubjectMark(_subject, listMarks);
            if (listMarks.Count == 0)
            {
                results_text.IsVisible = true;
            }
            else
            {
                results_text.IsVisible = false;
            }

            this.BindingContext = subjectMark; //!!!
            status_bars();
            details();
        }
Пример #5
0
        public string Calculate()
        {
            string data = HttpContext.Current.Request["SubjectMarks"];

            SubjectMark[] subjectMarks = JsonConvert.DeserializeObject <SubjectMark[]>(data);

            SubjectMark MinSubjectMarks = subjectMarks.First(x => x.ObtainMarks == subjectMarks.Min(y => y.ObtainMarks));
            SubjectMark MaxSubjectMarks = subjectMarks.First(x => x.ObtainMarks == subjectMarks.Max(y => y.ObtainMarks));

            decimal TotalSubjects    = subjectMarks.Count();
            decimal totalMarks       = 100 * TotalSubjects;
            decimal totalObtainMarks = subjectMarks.Sum(x => x.ObtainMarks);
            decimal percent          = (totalObtainMarks / totalMarks) * 100;

            Result result = new Result()
            {
                MinimumSubject = MinSubjectMarks,
                MaximumSubject = MaxSubjectMarks,
                Percentage     = percent
            };

            return(JsonConvert.SerializeObject(result));
        }
Пример #6
0
        public bool AddAverage(int classId, int subjectId, int semesterId)
        {
            var studentIds = db.Students
                             .Where(x => x.ClassId == classId && x.DelFlag == false)
                             .Select(x => x.Id)
                             .ToList();

            if (!studentIds.Any())
            {
                return(false);
            }

            //check if average marks have already in Db
            var checkAverageMark = db.SubjectMarks
                                   .FirstOrDefault(x => x.SubjectId == subjectId && x.StudentId == studentIds[0] && x.SemesterId == semesterId && x.TypeMarkId == 5 && x.DelFlag == false);

            if (checkAverageMark != null)
            {
                return(false);
            }

            var averageSubjectMarks = new List <SubjectMark>();

            try
            {
                foreach (int studentId in studentIds)
                {
                    var subjectMarks = db.SubjectMarks
                                       .Where(x => x.StudentId == studentId && x.SubjectId == subjectId && x.SemesterId == semesterId && x.DelFlag == false)
                                       .Select(x => new
                    {
                        TypeMarkId = x.TypeMarkId,
                        Mark       = x.Mark
                    }).ToList();

                    //check student has a full of mark, if not return false
                    var typeMarks = subjectMarks.GroupBy(x => x.TypeMarkId).ToArray();

                    if (typeMarks.Length != 4)
                    {
                        return(false);
                    }

                    var firstMark  = 0.0;
                    var secondMark = 0.0;
                    var thirdMark  = 0.0;
                    var fourthMark = 0.0;

                    var firstMarks = subjectMarks.Where(x => x.TypeMarkId == 1).Select(x => x.Mark).ToList();

                    if (!firstMarks.Any())
                    {
                        firstMark = 0;
                    }
                    else
                    {
                        firstMark = firstMarks.Average();
                    }

                    var secondMarks = subjectMarks.Where(x => x.TypeMarkId == 2).Select(x => x.Mark).ToList();

                    if (!secondMarks.Any())
                    {
                        secondMark = 0;
                    }
                    else
                    {
                        secondMark = secondMarks.Average();
                    }

                    var thirdMarks = subjectMarks.Where(x => x.TypeMarkId == 3).Select(x => x.Mark).ToList();

                    if (!thirdMarks.Any())
                    {
                        thirdMark = 0;
                    }
                    else
                    {
                        thirdMark = thirdMarks.Average();
                    }

                    var fourthMarks = subjectMarks.Where(x => x.TypeMarkId == 4).Select(x => x.Mark).ToList();

                    if (!fourthMarks.Any())
                    {
                        fourthMark = 0;
                    }
                    else
                    {
                        fourthMark = fourthMarks.Average();
                    }

                    var averageMark = (firstMark + secondMark + thirdMark * 2 + fourthMark * 3) / 7;

                    var averageSubjectMark = new SubjectMark()
                    {
                        SubjectId  = subjectId,
                        SemesterId = semesterId,
                        StudentId  = studentId,
                        TypeMarkId = 5,
                        Mark       = averageMark
                    };

                    averageSubjectMarks.Add(averageSubjectMark);
                }

                db.SubjectMarks.AddRange(averageSubjectMarks);
                db.SaveChanges();
            }
            catch
            {
                return(false);
            }

            return(true);
        }