/// <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} }} "); }