public DataboundDatagridItemCreatorForm(ISomeService someService) { _view = new DataboundDatagridItemCreatorFormView(); var someText = LocalValueFieldBuilder.Build(_view.SomeText, Validator.IsNotNullRef); var someNumber = LocalValueFieldBuilder.BuildNullableInt(_view.SomeNumber, Validator.IsNotNull, Validator.MustBePositive <int>()); var someBool = LocalValueFieldBuilder.Build(_view.SomeBool); _view.SomeTrait.PermittedValues = EnumExtensions.GetEnumValues <SomeTraitType>().Select(x => (SomeTraitType?)x); var someTrait = LocalValueFieldBuilder.Build(_view.SomeTrait, Validator.IsNotNull); var createProduct = RemoteActionBuilder.Build(_view.CreateAction, () => someService.Create( new SomeDto { SomeNumber = someNumber.Value.GetValueOrDefault(), SomeText = someText.Value, SomeBool = someBool.Value, SomeTrait = someTrait.Value.Value }), x => { CreatedItem = x; Ended?.Invoke(this, Outcome.Created); }); var isFormValid = new AggregatedErrorsValue <bool>(false, self => !self.Errors.Any(), x => { x.Observes(someText); x.Observes(someNumber); x.Observes(someBool); x.Observes(someTrait); }); createProduct.BindEnableAndInitialize(isFormValid); }
public ConfirmOperationForm(Func <Task <T> > operation, ConfirmOperationFormView view, string message = null, string title = null) { Title = title ?? I18n.Translate("Confirmation"); _view = view; _message = new LocalValue <string>(message ?? I18n.Translate("Without message")); view.Message.BindReadOnlyAndInitialize(_message); RemoteActionBuilder.Build(view.Confirm, operation, x => { SuccessResult = x; Ended?.Invoke(this, ConfirmOperationFormOutcome.Success); }); }
public LoginForm(LoginFormView view, Func <string, string, Task <Tuple <string, UserT> > > service, Action <string, UserT> storeResult) { View = view; var login = new LocalValue <string>("", ""); login.AddValidatorAndRevalidate( (x, errors) => errors.IfTrueAdd(string.IsNullOrWhiteSpace(x), I18n.Translate("Field cannot be empty")) ); view.Login.BindReadWriteAndInitialize(login); var passwd = new LocalValue <string>("", ""); passwd.AddValidatorAndRevalidate( (x, errors) => errors.IfTrueAdd(string.IsNullOrWhiteSpace(x), I18n.Translate("Field cannot be empty")) ); view.Password.BindReadWriteAndInitialize(passwd); var mayAttemptLogin = new AggregatedErrorsValue <bool>(false, self => !self.Errors.Any(), x => { x.Observes(login); x.Observes(passwd); }); var attemptLogin = RemoteActionBuilder.Build(view.AttemptLogin, () => service(login.Value, passwd.Value), x => { storeResult(x.Item1, x.Item2); LoggedUserName = login.Value; ErrorMessageOrNull = null; Ended?.Invoke(this, CompletedOrCanceled.Completed); }, x => { LoggedUserName = null; ErrorMessageOrNull = x.ErrorMessage; Ended?.Invoke(this, CompletedOrCanceled.Canceled); }); attemptLogin.BindEnableAndInitialize(mayAttemptLogin); }
public SseSenderForm(ISomeService someService, Func <string> sseSessionIdProvider) { _sseSessionIdProvider = sseSessionIdProvider; RemoteActionBuilder.Build(_view.PublishCanada, () => someService.PublishNotification(_sseSessionIdProvider(), Country.Canada), x => LogAccept(Country.Canada, x)); RemoteActionBuilder.Build(_view.PublishUSA, () => someService.PublishNotification(_sseSessionIdProvider(), Country.USA), x => LogAccept(Country.USA, x)); RemoteActionBuilder.Build(_view.PublishGermany, () => someService.PublishNotification(_sseSessionIdProvider(), Country.Germany), x => LogAccept(Country.Germany, x)); RemoteActionBuilder.Build(_view.PublishFrance, () => someService.PublishNotification(_sseSessionIdProvider(), Country.France), x => LogAccept(Country.France, x)); RemoteActionBuilder.Build(_view.PublishSouthAfrica, () => someService.PublishNotification(_sseSessionIdProvider(), Country.SouthAfrica), x => LogAccept(Country.SouthAfrica, x)); RemoteActionBuilder.Build(_view.PublishTunisia, () => someService.PublishNotification(_sseSessionIdProvider(), Country.Tunisia), x => LogAccept(Country.Tunisia, x)); }
public RemoteValueChangeByChoiceForm( Func <string> titleProv, Func <T, Task <T> > saveChange, RemoteValueChangeByChoiceFormView <T> view, params Validate <T>[] validators) { _titleProv = titleProv; _view = view; _localValue = LocalValueFieldBuilder.Build(default(T), view.Choosen, validators); var remoteActionModel = RemoteActionBuilder.Build(view.Confirm, () => saveChange(_localValue.Value), x => { SavedValue = x; Ended?.Invoke(this, CompletedOrCanceled.Completed); }); var isFormValid = new AggregatedErrorsValue <bool>(false, self => !self.Errors.Any(), x => { x.Observes(_localValue); }); remoteActionModel.BindEnableAndInitialize(isFormValid); }
public RemoteValueChangeByEntryForm( Func <DomainT, Task <RemoteT> > remoteChanger, IReadWriteValueView <HTMLElement, ViewT> input, Action <string> inputLabelChanger, Func <DomainT, ViewT> domainToViewConverter, Func <ViewT, DomainT> viewToDomainConverter, string label, string titleOrNull = null, DomainT defaultValue = default(DomainT), TextType labelTextType = TextType.TreatAsText, params Validate <DomainT>[] validators) { _inputLabelChanger = inputLabelChanger; Title = titleOrNull ?? I18n.Translate("Input"); _view = new RemoteValueChangeByEntryFormView <ViewT>(input, labelTextType); _inputLabelChanger(label); _msg = new LocalValue <string>(""); _view.Message.BindReadOnlyAndInitialize(_msg); _input = LocalValueFieldBuilder.Build( defaultValue, _view.Input, domainToViewConverter, viewToDomainConverter, validators); var isFormValid = new AggregatedErrorsValue <bool>( false, x => !x.Errors.Any(), x => x.Observes(_input)); var confirmInput = RemoteActionBuilder.Build( _view.Confirm, () => remoteChanger(_input.Value), x => { SavedValue = x; Ended?.Invoke(this, CompletedOrCanceled.Completed); }); confirmInput.BindEnableAndInitialize(isFormValid); }