/// <summary> /// Executes the command /// </summary> /// <param name="parameter"> /// Command parameter /// </param> public override void Execute(object parameter) { Core.Logger.GetLogger.LogAsync(Core.LogMode.Debug, $"Exetute {nameof(AskCommand)}"); // check if fields are empty if (!askQuestionViewModel.IsDataValid()) { return; } Core.Logger.GetLogger.LogAsync(Core.LogMode.Debug, $"All validation has been passed succesfuly"); // send message DataAccess.Entities.Message message = new DataAccess.Entities.Message { Subject = askQuestionViewModel.Subjects[askQuestionViewModel.SelectedSubjectIndex], Text = askQuestionViewModel.Message, User = askQuestionViewModel.DataStorage.LoggedUser, }; Core.Logger.GetLogger.LogAsync(Core.LogMode.Info, $"Create new message with: Subject: {message.Subject.Name}, Message Length: {message.Text.Length}, Message: {message.Text}, User NickName: {message.User.NickName}, Date: {message.Date}"); askQuestionViewModel.UnitOfWork.MessageRepository.Insert(message); askQuestionViewModel.UnitOfWork.Save(); Core.Logger.GetLogger.LogAsync(Core.LogMode.Debug, "Save message to DataBase"); // reset message text, subject stay the same askQuestionViewModel.ResetFields(); // notify user about succesful message sending Core.Logger.GetLogger.LogAsync(Core.LogMode.Debug, "Notify user about succesful message sending"); askQuestionViewModel.WindowManager.ShowMessageWindow(Core.Messages.Info.ViewModel.MESSAGE_SENT); }
// METHODS /// <summary> /// Sets filter predicate /// </summary> /// <param name="entity"> /// The entities for which predicate is applied /// </param> /// <returns> /// Boolean values which determines if entity is allowed by predicate or not /// </returns> protected override bool FilterPredicate(object entity) { DataAccess.Entities.Message messageToFilter = (DataAccess.Entities.Message)entity; bool isShown = true; // checks subject if (subjectIndex != Core.Configuration.Constants.WRONG_INDEX) { isShown &= Where(messageToFilter, subjects[subjectIndex]); } // checks date isShown &= Where(messageToFilter, from, to); return(isShown); }
// CONSTRUCTORS /// <summary> /// Initialize a new instance of <see cref="SingleViewModel"/> /// </summary> /// <param name="message"> /// An instance of <see cref="DataAccess.Entities.Message"/> that should be displayed /// </param> public SingleViewModel(DataAccess.Entities.Message message) : base(message, false) { this.message = message; deleteCommand = new Commands.Admin.DeleteCommand(); }