Beispiel #1
0
 private void Members_MemberSelected(ViewModels.MemberVM member)
 {
     MemberHolder.Children.Clear();
     if (member != null)
     {
         MemberHolder.Children.Add(new MemberCard(member.Id));
         txtCredit.Text = $"{member.Credit:n0}";
         MemberId       = member.Id;
     }
 }
Beispiel #2
0
        private void Card_MemberSelected(ViewModels.MemberVM member)
        {
            if (Type == MemberSelectionCategory.SelectionOnly)
            {
                if (MemberSelected != null)
                {
                    MemberSelected(member);
                }

                if (member != null)
                {
                    this.Close();
                }
            }
            else if (Type == MemberSelectionCategory.MembersTransit)
            {
                db = new Data.GymContextDataContext();
                var lastTransit = db.Passages.Where(p => p.MemberId == member.Id).OrderByDescending(p => p.Time).FirstOrDefault();
                var isEntrance  = !(lastTransit?.IsEntrance ?? false);

                var mmbr  = db.Members.Where(m => m.Id == member.Id).FirstOrDefault();
                var nrols = mmbr.Enrolls.Where(e => e.StartDate <= DateTime.Today &&
                                               (e.ExpireDate == null || e.ExpireDate >= DateTime.Today)).ToList();



                if (isEntrance && !nrols.Any())
                {
                    Alert.Content            = $"در حال حاضر {member.Fullname} هیچ دوره فعالی ندارند";
                    MessageSnackBar.IsActive = true;
                    Info.SetMember(member.Id, "غیر مجاز: دوره فعال ندارد", null);
                    (Application.Current.MainWindow as Main).Focus();
                    Info.Show();
                    Info.Focus();
                    return;
                }

                var nc            = nrols.SelectMany(n => n.EnrollCourses).ToList();
                var todayTransits = db.Passages.Where(p => p.MemberId == member.Id &&
                                                      p.IsEntrance && p.Time >= DateTime.Today && p.Time < DateTime.Today.AddDays(1)).Count();

                if (isEntrance && nrols.Count == 1 && todayTransits >= nrols.FirstOrDefault().DailyPasses)
                {
                    Alert.Content            = $" تجاوز از تعداد تردد مجاز روزانه";
                    MessageSnackBar.IsActive = true;
                    Info.SetMember(member.Id, "غیر مجاز: تردد بیش از حد مجاز روزانه", null);
                    Info.Show();
                    Info.Focus();
                    return;
                }

                if (!nc.Any(c => c.SessionsLeft > 0))
                {
                    if (isEntrance)
                    {
                        Alert.Content            = $"{member.Fullname} از تمام جلسات خود استفاده کرده اند و اجازه ورود ندارند";
                        MessageSnackBar.IsActive = true;
                        Info.SetMember(member.Id, "غیر مجاز: جلسات به پایان رسیده است", null);
                        Info.Show();
                        return;
                    }
                }

                //var courses = nc.Select(n => n.Course).ToList();

                PayedCourses = nc.Select(c =>
                                         new MemberCourse
                {
                    EId          = c.EnrollId,
                    CId          = c.CourseId,
                    Name         = c.Course.Name,
                    SessionsLeft = c.SessionsLeft,
                    ExpiresAt    = c.Enroll.ExpireDate,
                    Used         = false
                }
                                         ).ToList();

                var nf = nrols.SelectMany(n => n.EnrollFacilities).ToList();

                PayedFacilities = nf.Select(f =>
                                            new MemberFacility
                {
                    EId          = f.EnrollId,
                    FId          = f.FacilityId,
                    Name         = f.Facility.Name,
                    SessionsLeft = f.SessionsLeft,
                    Used         = false
                }
                                            ).ToList();

                FacilitiesBox.Children.Clear();
                PayedFacilities.ForEach(f =>
                {
                    var check = new CheckBox
                    {
                        IsThreeState = false,
                        IsChecked    = false,
                        Content      = f.Name,
                        IsEnabled    = f.SessionsLeft > 0,
                        Tag          = f
                    };

                    FacilitiesBox.Children.Add(check);
                });



                //PayedCourses = (from m in db.Members
                //                join e in db.Enrolls on m.Id equals e.MemberId
                //                join ec in db.EnrollCourses on e.Id equals ec.CourseId
                //                join c in db.Courses on ec.CourseId equals c.Id
                //                where m.Id == member.Id
                //                && e.StartDate <= DateTime.Today
                //                && (e.ExpireDate == null || e.ExpireDate >= DateTime.Today)
                //                select new MemberCourse
                //                {
                //                    EId = ec.EnrollId,
                //                    CId = ec.CourseId,
                //                    Name = c.Name,
                //                    ExpiresAt = e.ExpireDate,
                //                    SessionsLeft = ec.SessionsLeft
                //                }).ToList();
                //PayedCourses = db.Members.Where(m => m.Id == SelectedMember.Id && m.EnrollCourses.SelectMany(ec => ec.Enroll))

                CoursesBox.Children.Clear();
                var oneCourseAvailable = PayedCourses.Where(x => x.SessionsLeft > 0).Count() == 1;
                PayedCourses.ForEach(c =>
                {
                    var check = new CheckBox
                    {
                        IsThreeState = false,
                        IsChecked    = oneCourseAvailable ? true : false,
                        Content      = c.Name,
                        IsEnabled    = c.SessionsLeft > 0,
                        Tag          = c
                    };

                    CoursesBox.Children.Add(check);
                });



                //TransitDialogHost.BringIntoView();
                PersonnelTransitDialog.Visibility = Visibility.Collapsed;
                MemberDeleteDialog.Visibility     = Visibility.Collapsed;
                MembersTransitDialog.Visibility   = Visibility.Visible;
                SelectedMember  = member;
                rdIn.IsChecked  = isEntrance;
                rdOut.IsChecked = !isEntrance;
                if (oneCourseAvailable)
                {
                    ProcessTransit(null);
                }
                else
                {
                    TransitDialogHost.IsOpen = true;
                    txtMemberName.Text       = member.Fullname;
                }


                //Close();
                //TransitDialogHost.IsEnabled = true;
                //TransitDialogHost.Visibility = Visibility.Visible;
            }
            else if (Type == MemberSelectionCategory.PersonnelTransit)
            {
                MembersTransitDialog.Visibility   = Visibility.Collapsed;
                MemberDeleteDialog.Visibility     = Visibility.Collapsed;
                PersonnelTransitDialog.Visibility = Visibility.Visible;
                TransitDialogHost.IsOpen          = true;
                txtPersonnelName.Text             = member.Fullname;
                var lastTransit = db.Passages.Where(p => p.MemberId == member.Id).OrderByDescending(p => p.Time).FirstOrDefault();
                var isEntrance  = !(lastTransit?.IsEntrance ?? false);
                prdIn.IsChecked  = isEntrance;
                prdOut.IsChecked = !isEntrance;
                SelectedMember   = member;
            }
            else if (Type == MemberSelectionCategory.DeleteMembers)
            {
                MembersTransitDialog.Visibility   = Visibility.Collapsed;
                PersonnelTransitDialog.Visibility = Visibility.Collapsed;
                MemberDeleteDialog.Visibility     = Visibility.Visible;
                TransitDialogHost.IsOpen          = true;
                deletingMemberName.Text           = member.Fullname;
                deletingMemberCredit.Value        = member.Credit < 0 ? (-1 * member.Credit) : 0;
                btnClearCreditDebtor.IsEnabled    = member.Credit < 0;
                deletingMemberTuitionDebtor.Value = member.Credit < 0 ? (member.Debtor - member.Credit) : member.Debtor;
                btnClearTutionDebtor.IsEnabled    = deletingMemberTuitionDebtor.Value > 0;
                SelectedMember            = member;
                btnDeleteMember.IsEnabled = deletingMemberCredit.Value + deletingMemberTuitionDebtor.Value <= 0;
            }
            else if (Type == MemberSelectionCategory.TutitionDebtorsList ||
                     Type == MemberSelectionCategory.ShoppingDebtorsList ||
                     Type == MemberSelectionCategory.NearExpiryList)
            {
                Enroll enroll = new Enroll();
                enroll.Section = Type == MemberSelectionCategory.NearExpiryList ? 1 : 2;
                enroll.Owner   = Main.Home;
                enroll.Show();
                enroll.LoadMember(member.Id);
            }
            if (Info.IsVisible)
            {
                Info.Focus();
                Info.BringIntoView();
            }
            //Close();
        }