public SpellDuty_ViewModel() { Load_Command = new RelayCommand <object>(p => { return(true); }, p => { getLst(); IsAdd = false; IsDelete = false; IsUserOpen = false; TimeStart = String.Empty; TimeEnd = String.Empty; Date = String.Empty; ListUser = new ObservableCollection <User>(Models.DataProvider.Ins.DB.Users); }); CloseAlert_Command = new RelayCommand <object>(x => { return(true); }, x => { IsActive = false; }); CloseDlg_Command = new RelayCommand <object>(p => { return(true); }, p => { IsAdd = false; IsDelete = false; IsUserOpen = false; }); #region add OpenformAdd_Command = new RelayCommand <object>(p => { if (IsAdd == true || IsDelete == true || IsUserOpen == true) { return(false); } return(true); }, p => { SelectedItem = new SpelldutyCustom(); IsAdd = true; }); Add_Command = new RelayCommand <object>(p => { if (SelectedItem == null) { return(false); } if (String.IsNullOrEmpty(SelectedItem.TimeSt) || String.IsNullOrEmpty(SelectedItem.TimeEn)) { return(false); } if (MyStaticMethods.ConvertTimeSpell(SelectedItem.TimeSt) >= MyStaticMethods.ConvertTimeSpell(SelectedItem.TimeEn)) { return(false); } return(true); }, p => { if (checkValid(MyStaticMethods.ConvertTimeSpell(SelectedItem.TimeSt), MyStaticMethods.ConvertTimeSpell(SelectedItem.TimeEn))) { Spellduty sp = new Spellduty(); sp = SpelldutyCustom.MapSpell(SelectedItem); Models.DataProvider.Ins.DB.Spellduties.Add(sp); Models.DataProvider.Ins.DB.SaveChanges(); IsAdd = false; getLst(); successAlert(); } else { IsAdd = false; IsActive = true; Message = "Ca trực bị trùng lặp"; } }); #endregion #region delete OpenformDelete_Command = new RelayCommand <Button>(p => { if (IsAdd == true || IsDelete == true || IsUserOpen == true) { return(false); } return(true); }, p => { SelectedItem = new SpelldutyCustom(); SelectedItem.id = List.Where(x => x.id == Convert.ToInt32(p.Uid)).SingleOrDefault().id; IsDelete = true; }); Delete_Command = new RelayCommand <object>(p => { return(true); }, p => { Spellduty item = Models.DataProvider.Ins.DB.Spellduties.Where(x => x.id == SelectedItem.id).SingleOrDefault(); Models.DataProvider.Ins.DB.Spellduties.Remove(item); Models.DataProvider.Ins.DB.SaveChanges(); IsDelete = false; getLst(); successAlert(); }); #endregion #region search Search_Command = new RelayCommand <object>(p => { return(true); }, p => { getLst(); List = new ObservableCollection <SpelldutyCustom>(List.Where(x => x.startTime.Value.Date == DateTime.Today)); if (!String.IsNullOrEmpty(Date)) { getLst(); List = new ObservableCollection <SpelldutyCustom>(List.Where(x => x.startTime.Value.Date.ToShortDateString() == Date)); } if (!String.IsNullOrEmpty(TimeStart)) { List = new ObservableCollection <SpelldutyCustom>(List.Where(x => { if (!String.IsNullOrEmpty(Date)) { DateTime dt = Convert.ToDateTime(Date); DateTime conDt = MyStaticMethods.ConvertTime(TimeStart, dt); return(x.startTime.Value >= conDt); } return(x.startTime.Value >= MyStaticMethods.ConvertTime(TimeStart)); })); } if (!String.IsNullOrEmpty(TimeEnd)) { List = new ObservableCollection <SpelldutyCustom>(List.Where(x => { if (!String.IsNullOrEmpty(Date)) { DateTime dt = Convert.ToDateTime(Date); DateTime conDt = MyStaticMethods.ConvertTime(TimeEnd, dt); return(x.endTime.Value <= conDt); } return(x.endTime.Value <= MyStaticMethods.ConvertTime(TimeEnd)); })); } }); #endregion #region users OpenUser_Command = new RelayCommand <Button>(p => { if (IsAdd == true || IsDelete == true || IsUserOpen == true) { return(false); } return(true); }, p => { int id = Convert.ToInt32(p.Uid); SelectedItem = new SpelldutyCustom(); SelectedItem.id = id; SelectedUser = null; ListSpellUser = new ObservableCollection <Spellduty_User>(Models.DataProvider.Ins.DB.Spellduty_User.Where(x => x.spelldutyId == id)); IsUserOpen = true; }); UpdateUser_Command = new RelayCommand <object>(p => { if (SelectedUser == null) { return(false); } var chk = new ObservableCollection <Spellduty_User>(ListSpellUser.Where(x => x.User == SelectedUser)); if (chk.Count != 0) { return(false); } return(true); }, p => { Models.Spellduty sp = Models.DataProvider.Ins.DB.Spellduties.Where(x => x.id == SelectedItem.id).SingleOrDefault(); if (sp.startTime.Value.Date < DateTime.Today.Date) { IsUserOpen = false; IsActive = true; Message = "Không cập nhật các bản ghi quá hạn"; return; } Spellduty_User item = new Spellduty_User() { spelldutyId = SelectedItem.id, User = SelectedUser }; Models.DataProvider.Ins.DB.Spellduty_User.Add(item); Models.DataProvider.Ins.DB.SaveChanges(); ListSpellUser.Add(item); }); RemoveUser_Command = new RelayCommand <Button>(p => { return(true); }, p => { Models.Spellduty sp = Models.DataProvider.Ins.DB.Spellduties.Where(x => x.id == SelectedItem.id).SingleOrDefault(); if (sp.startTime.Value.Date < DateTime.Today.Date) { IsUserOpen = false; IsActive = true; Message = "Không cập nhật các bản ghi quá hạn"; return; } int userId = Convert.ToInt32(p.Uid); int spellId = SelectedItem.id; Spellduty_User item = Models.DataProvider.Ins.DB.Spellduty_User.Where(x => x.Spellduty.id == spellId && x.User.users_id == userId).SingleOrDefault(); Models.DataProvider.Ins.DB.Spellduty_User.Remove(item); Models.DataProvider.Ins.DB.SaveChanges(); ListSpellUser.Remove(item); }); #endregion #region sort SortbyDate_Command = new RelayCommand <object>(p => { return(true); }, p => { ObservableCollection <SpelldutyCustom> chkList = new ObservableCollection <SpelldutyCustom>(List.OrderByDescending(x => x.startTime.Value.Date)); if (List[0] == chkList[0]) { List = new ObservableCollection <SpelldutyCustom>(List.OrderBy(x => x.startTime.Value.Date)); } else { List = chkList; } }); SortbyTimeSt_Command = new RelayCommand <object>(p => { return(true); }, p => { ObservableCollection <SpelldutyCustom> chkList = new ObservableCollection <SpelldutyCustom>(List.OrderByDescending(x => x.startTime.Value.TimeOfDay)); if (List[0] == chkList[0]) { List = new ObservableCollection <SpelldutyCustom>(List.OrderBy(x => x.startTime.Value.TimeOfDay)); } else { List = chkList; } }); SortbyTimeEn_Command = new RelayCommand <object>(p => { return(true); }, p => { ObservableCollection <SpelldutyCustom> chkList = new ObservableCollection <SpelldutyCustom>(List.OrderByDescending(x => x.endTime.Value.TimeOfDay)); if (List[0] == chkList[0]) { List = new ObservableCollection <SpelldutyCustom>(List.OrderBy(x => x.endTime.Value.TimeOfDay)); } else { List = chkList; } }); #endregion }