Exemple #1
0
    /// <inheritdoc/>
    protected override string CreateClass(string nestedClasses) =>
    $@"
    {ClassAccess.ToFriendlyString()} partial class {ClassName}
    {{
        {nestedClasses}
    }}
";
        public void CreateAccess(ClassAccess classAccess)
        {
            var accesses = _context.GetList <ClassAccess>();

            accesses.Add(classAccess);
            _context.Save();
        }
 private static ClassAccessViewModel FromEntity(ClassAccess item, IDateTimeHumanizeStrategy humanizer)
 {
     return(new ClassAccessViewModel
     {
         ClassId = item.Class.Id,
         Percentual = item.Percentual,
         ClassName = item.Class.Name,
         CourseName = item.Class.Course.Name,
         DateTimeDescription =
             humanizer.Humanize(item.AccessDateTime, DateTime.Now, CultureInfo.CurrentUICulture)
     });
 }
        public void UpdateProgress(ClassAccess access)
        {
            var accesses       = _context.GetList <ClassAccess>();
            var existingAccess = accesses
                                 .Where(x => x.Class.Id == access.Class.Id && x.User.Id == access.User.Id)
                                 .OrderByDescending(x => x.AccessDateTime)
                                 .FirstOrDefault();

            if (existingAccess == null)
            {
                accesses.Add(access);
            }
            else
            {
                access.Id = existingAccess.Id;
                _context.Update(existingAccess, access);
            }

            _context.Save();
        }
    /// <inheritdoc/>
    protected override string CreateClass(string nestedClasses)
    {
        if (_viewModelPropertyType is null)
        {
            throw new InvalidOperationException("Must have a valid view model type.");
        }

        if (PropertyTypeName is null || string.IsNullOrWhiteSpace(PropertyTypeName))
        {
            throw new InvalidOperationException("Must have a valid PropertyTypeName");
        }

        var viewModelPropertyAccess   = _viewModelPropertyAccess.ToFriendlyString();
        var viewModelPropertyTypeName = _viewModelPropertyType.GetTypeName().Replace('+', '.');
        var propertyAccess            = _propertyAccess.ToFriendlyString();
        var propertyTypeName          = PropertyTypeName.Replace('+', '.');
        var oneWayBindString          = string.Empty;
        var twoWayBindString          = string.Empty;

        if (_oneWayBindInvocation is not null)
        {
            oneWayBindString = @$ "public IDisposable {MethodNames.GetBindOneWaySubscription}()
        {{
            var instance = this;
            return {_oneWayBindInvocation};
        }}";
        }

        if (_twoWayBindInvocation is not null)
        {
            twoWayBindString = @$ "public IDisposable {MethodNames.GetBindTwoWaySubscription}()
        {{
            var instance = this;
            return {_twoWayBindInvocation};
        }}";
        }

        return($@"
    {ClassAccess.ToFriendlyString()} partial class {ClassName} : INotifyPropertyChanged
    {{
        private {viewModelPropertyTypeName} _viewModel;
        private {propertyTypeName} _value;
        public event PropertyChangedEventHandler PropertyChanged;
        {propertyAccess} {propertyTypeName} Value
        {{
            get => _value;
            set => RaiseAndSetIfChanged(ref _value, value);
        }}
        {viewModelPropertyAccess} {viewModelPropertyTypeName} ViewModel
        {{
            get => _viewModel;
            set => RaiseAndSetIfChanged(ref _viewModel, value);
        }}
              
        {oneWayBindString}
        {twoWayBindString}
        public IObservable<object> {MethodNames.GetWhenChangedTargetObservable}()
        {{
            return this.WhenChanged(x => x.ViewModel);
        }}
        public IObservable<object> {MethodNames.GetWhenChangedObservable}()
        {{
            return this.WhenChanged(x => x.Value);
        }}
        protected void RaiseAndSetIfChanged<T>(ref T fieldValue, T value, [CallerMemberName] string propertyName = null)
        {{
            if (EqualityComparer<T>.Default.Equals(fieldValue, value))
            {{
                return;
            }}
            fieldValue = value;
            OnPropertyChanged(propertyName);
        }}
        protected virtual void OnPropertyChanged(string propertyName)
        {{
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }}
        {nestedClasses}
    }}
");
    }