public static PermissionResult CanUpdateHeaderDate(MainContext context, AgendaHeader header, IEnumerable <AgendaHeader> headers, DateTime newDate) { if (header == null) { throw new ArgumentNullException(nameof(header)); } if (headers == null) { throw new ArgumentNullException(nameof(headers)); } // TODO : !!! return(PermissionResult.Allow); }
public static PermissionResult CanAddHeader(MainContext context, AgendaHeader header, IEnumerable <AgendaHeader> headers) { if (header == null) { throw new ArgumentNullException(nameof(header)); } if (headers == null) { throw new ArgumentNullException(nameof(headers)); } var result = Validator.ValidateNotEmpty(header.Name, @"HeaderNameIsRequired"); if (result != PermissionResult.Allow) { return(result); } var name = (header.Name ?? string.Empty).Trim(); foreach (var h in headers) { if (h.Name.Equals(name, StringComparison.OrdinalIgnoreCase)) { return(PermissionResult.Deny(@"HeaderWithTheSameNameAlreadyExists")); } } var values = GetData(context); //context.Log(nameof(IsAgendaHeaderExists), LogLevel.Info); if (IsAgendaHeaderExists(values, name)) { return(PermissionResult.Deny(@"HeaderWithTheSameNameAlreadyExists")); } var date = header.DateTime.Date; //context.Log(nameof(IsDateExists), LogLevel.Info); if (IsDateExists(values, date)) { return(PermissionResult.Deny(@"HeaderWithTheSameDateAlreadyExists")); } // TODO : Parameter ??? if (date < DateTime.Today.AddDays(-30)) { return(PermissionResult.Confirm(@"HeaderDateConfirmTooOld")); } return(PermissionResult.Allow); }
private async void AddHeader() { var context = nameof(AgendaHeaderScreenViewModel); var feature = new Feature(context, nameof(AddHeader)); try { this.MainContext.Save(feature); // Create model var header = new AgendaHeader(0, this.HeaderName) { DateTime = HeaderDateTime }; var result = this.CanAddHeader(this.MainContext, header, this.AgendaHeaders.Select(v => v.AgendaHeader)); if (result.Type != PermissionType.Allow) { //var message = this.MainContext.LocalizationManager.Get(new LocalizationKey(context, result.LocalizationKeyName)); //var confirmation = await this.MainContext.ModalDialog.ShowAsync(message, feature, result.Type); //if (confirmation != DialogResult.Accept) //{ // return; //} } // Create view model var viewModel = new AgendaHeaderViewModel(header); // Insert into db using (var ctx = this.MainContext.CreateDataQueryContext()) { //this.DataProvider.Insert(ctx, viewModel.Model); ctx.Complete(); } // Insert to view models this.AgendaHeaders.Add(viewModel); // Refresh the screen this.DisplayData(); } catch (Exception ex) { this.MainContext.Save(feature, ex); } }
public static PermissionResult CanUpdateHeaderAddress(MainContext context, AgendaHeader header, IEnumerable <AgendaHeader> headers, string address) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (header == null) { throw new ArgumentNullException(nameof(header)); } if (headers == null) { throw new ArgumentNullException(nameof(headers)); } throw new NotImplementedException(); }
public AgendaHeaderViewModel(AgendaHeader agendaHeader) { if (agendaHeader == null) { throw new ArgumentNullException(nameof(agendaHeader)); } this.AgendaHeader = agendaHeader; foreach (var detail in agendaHeader.Details) { this.Details.Add(new AgendaDetailViewModel(detail)); } this.Details.CollectionChanged += (sender, args) => { agendaHeader.Details.Clear(); agendaHeader.Details.AddRange(this.Details.Select(v => v.AgendaDetail)); }; }