Exemplo n.º 1
0
        private void EnrollMenuItem_Click(object sender, RoutedEventArgs e)
        {
            var form = new Enroll {
                Owner = this
            };

            form.Closed += Form_Closed;
            form.Show();
            //new MembersSearch().Show();
        }
Exemplo n.º 2
0
        private void ShowMemberForm_Click(object sender, RoutedEventArgs e)
        {
            var record = ((FrameworkElement)sender).DataContext as UserTransaction;

            if (record.MemberId > 0)
            {
                Enroll member = new Enroll();
                member.Owner = Main.Home;
                member.Show();
                member.LoadMember(record.MemberId);// db.Members.FirstOrDefault(m=>m.Id == record.MemberId));
                member.section.SelectedIndex = 3;
            }
        }
Exemplo n.º 3
0
        public void UpdatePassages()
        {
            //lastId = 0;
            //List.Children.Clear();

            Data.GymContextDataContext db = new Data.GymContextDataContext();
            var h = Domain.Dynamics.TransitFarthestHour;
            //var today = DateTime.Today;
            var passages =
                (from p in db.Passages
                 where !p.Member.IsStaff &&
                 !p.Member.IsMentor &&
                 p.Id > lastId &&
                 p.Time >= DateTime.Now.AddHours(-1 * h)
                 select new
            {
                p.Id,
                p.IsEntrance,
                p.Time,
                Member = p.Member.Firstname + " " + p.Member.Lastname,
                MemberId = p.MemberId,
                IsRegular = p.Member.IsRegular,
                Closet = db.ClosetUsages.Where(u => u.MemberId == p.MemberId && u.FromTime >= p.Time && u.FromTime <= p.Time.AddSeconds(30)).Select(c => c).FirstOrDefault()
            }).ToList();

            lastId = passages.Any() ? passages.Select(p => p.Id).Max() : lastId;

            if (passages.Count == 0)
            {
                return;
            }

            var style   = new Style();
            var trigger = new Trigger {
                Property = IsMouseOverProperty, Value = true
            };

            trigger.Setters.Add(new Setter {
                Property = OpacityProperty, Value = 1.0
            });
            var triggeroff = new Trigger {
                Property = IsMouseOverProperty, Value = false
            };

            triggeroff.Setters.Add(new Setter {
                Property = OpacityProperty, Value = 0.5
            });
            style.Triggers.Add(trigger);
            style.Triggers.Add(triggeroff);

            passages.ToList().ForEach(pass =>
            {
                StackPanel panel = new StackPanel
                {
                    Orientation   = Orientation.Horizontal,
                    FlowDirection = FlowDirection.RightToLeft,
                    Style         = style,
                };
                panel.ContextMenu = new ContextMenu();

                var enrollitem = new MenuItem {
                    Header = "فرم ثبت نام"
                };
                enrollitem.Click += (s, ce) =>
                {
                    Enroll member = new Enroll();
                    member.Owner  = Main.Home;
                    member.Show();
                    member.LoadMember(pass.MemberId);
                };
                enrollitem.IsEnabled = pass.IsRegular;
                panel.ContextMenu.Items.Add(enrollitem);

                string tip = "";
                if (pass.IsEntrance)
                {
                    var firstUsageAfter = db.ClosetUsages.Where(u => u.MemberId == pass.MemberId && u.FromTime >= pass.Time).OrderBy(u => u.FromTime).FirstOrDefault();
                    if (firstUsageAfter != null)
                    {
                        tip += "کمد: " + firstUsageAfter.ClosetId.ToString();
                    }
                }
                else
                {
                    var closetAtTheTime = db.ClosetUsages.Where(u => u.MemberId == pass.MemberId && u.FromTime <= pass.Time).OrderByDescending(u => u.FromTime).FirstOrDefault();
                    if (closetAtTheTime != null)
                    {
                        tip += "کمد: " + closetAtTheTime.ClosetId.ToString();
                    }
                }

                tip += Environment.NewLine + "تاریخ: " + pass.Time.Date.ToFa()
                       + Environment.NewLine + "زمان: " + pass.Time.ToLongTimeString()
                       + Environment.NewLine + "عضو: " + pass.Member
                       + Environment.NewLine + "وضعیت تردد : " + (pass.IsEntrance ? "ورود" : "خروج");

                panel.ToolTip = tip;

                var infoitem = new MenuItem {
                    Header = "مشاهده اطلاعات عضو"
                };
                List <string> facilities = new List <string>();
                infoitem.Click          += (s, ce) =>
                {
                    bool facilitiesCached = false;
                    if (!facilitiesCached)
                    {
                        var mmbr  = db.Members.Where(m => m.Id == pass.MemberId).FirstOrDefault();
                        var nrols = mmbr.Enrolls.Where(e => e.StartDate <= DateTime.Today &&
                                                       (e.ExpireDate == null || e.ExpireDate >= DateTime.Today)).ToList();
                        var nf     = nrols.SelectMany(n => n.EnrollFacilities).ToList();
                        facilities = nf.Select(f => f.Facility.Name).ToList();
                    }

                    MemberInformation member = new MemberInformation();
                    member.Owner             = Main.Home;
                    member.SetMember(pass.MemberId, pass.IsEntrance ? "ورود" : "خروج", facilities);
                    member.Show();
                };
                infoitem.IsEnabled = pass.IsRegular;
                panel.ContextMenu.Items.Add(infoitem);

                var financial = new MenuItem {
                    Header = "لیست تراکنش های عضو"
                };
                financial.Click += (s, ce) =>
                {
                    Enroll member = new Enroll();
                    member.Owner  = Main.Home;
                    member.Show();
                    member.LoadMember(pass.MemberId);
                    member.Section = 3;
                };
                panel.ContextMenu.Items.Add(financial);

                MaterialDesignThemes.Wpf.PackIcon icon = new MaterialDesignThemes.Wpf.PackIcon
                {
                    Kind       = pass.IsEntrance ? MaterialDesignThemes.Wpf.PackIconKind.TrendingUp : MaterialDesignThemes.Wpf.PackIconKind.TrendingDown,
                    Foreground = new SolidColorBrush(pass.IsEntrance ? Colors.DodgerBlue : Colors.DarkRed),
                    Margin     = new Thickness(0, 6, 0, 0)
                };
                Label time = new Label
                {
                    Foreground = new SolidColorBrush(pass.IsRegular ? Colors.DodgerBlue : Colors.Gray),
                    Content    = $"{pass.Time.ToString("HH:mm")} {pass.Member}",
                    Margin     = new Thickness(2, 1, 2, 1),
                    //FontWeight = pass.IsRegular ? FontWeights.Bold : FontWeights.Normal
                };

                var mem = db.Members.First(m => m.Id == pass.MemberId);

                var validUntill    = DateTime.Now.AddDays(4);
                var needsExtension = db.Enrolls.Where(n =>
                                                      n.MemberId == mem.Id &&
                                                      (n.ExpireDate <= validUntill && n.ExpireDate >= DateTime.Now)).Any();

                panel.Children.Add(icon);
                panel.Children.Add(time);
                if (needsExtension)
                {
                    MaterialDesignThemes.Wpf.PackIcon ext = new MaterialDesignThemes.Wpf.PackIcon
                    {
                        Kind       = MaterialDesignThemes.Wpf.PackIconKind.ClockEnd,
                        Foreground = new SolidColorBrush(pass.IsEntrance ? Colors.DodgerBlue : Colors.DarkRed),
                        Margin     = new Thickness(0, 6, 0, 0),
                        ToolTip    = "نیازمند تمدید"
                    };
                    panel.Children.Add(ext);
                }
                if (mem.Debtor > 0)
                {
                    panel.Children.Add(new MaterialDesignThemes.Wpf.PackIcon
                    {
                        Kind       = MaterialDesignThemes.Wpf.PackIconKind.CurrencyUsd,
                        Foreground = new SolidColorBrush(pass.IsEntrance ? Colors.DodgerBlue : Colors.DarkRed),
                        Margin     = new Thickness(0, 6, 0, 0),
                        ToolTip    = "بدهکار شهریه"
                    });
                }
                if (mem.Debtor > 0)
                {
                    panel.Children.Add(new MaterialDesignThemes.Wpf.PackIcon
                    {
                        Kind       = MaterialDesignThemes.Wpf.PackIconKind.Carrot,
                        Foreground = new SolidColorBrush(pass.IsEntrance ? Colors.DodgerBlue : Colors.DarkRed),
                        Margin     = new Thickness(0, 6, 0, 0),
                        ToolTip    = "بدهکار بوفه"
                    });
                }
                List.Children.Add(panel);

                if (List.Children.Count > 100)
                {
                    List.Children.RemoveRange(0, List.Children.Count - 100);
                }
            });



            //while (true)
            //{
            //    //return;
            //    if (DateTime.Now.Subtract(lastcheck).TotalMilliseconds < 1000)
            //        continue;

            //    lastcheck = DateTime.Now;
            //    List.Children.Add(new Label
            //    {
            //        Foreground = new SolidColorBrush(Colors.Gray),
            //        Content = DateTime.Now.ToString("HH:mm:ss")
            //    });
            //    if (List.Children.Count > 100)
            //        List.Children.RemoveAt(0);
            //}
        }
Exemplo n.º 4
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();
        }