Add AcAddress; Implement AcAddress and relations; ITimeStampCreated improvements; refactoring, improvements, fixes, etc...
This commit is contained in:
parent
0d122e1470
commit
2b66a16047
|
|
@ -63,10 +63,16 @@ public abstract class AcDbContextBase : DbContext
|
||||||
if (entityEntry.Entity is ITimeStampModified timeStampModified)
|
if (entityEntry.Entity is ITimeStampModified timeStampModified)
|
||||||
timeStampModified.Modified = utcNow;
|
timeStampModified.Modified = utcNow;
|
||||||
|
|
||||||
if (entityEntry.State != EntityState.Added) continue;
|
if (entityEntry.Entity is not ITimeStampCreated timeStampCreated)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (entityEntry.Entity is ITimeStampCreated timeStampCreated)
|
if (entityEntry.State == EntityState.Added)
|
||||||
|
{
|
||||||
timeStampCreated.Created = utcNow;
|
timeStampCreated.Created = utcNow;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
entityEntry.Property(nameof(timeStampCreated.Created)).IsModified = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
using AyCode.Interfaces.Addresses;
|
||||||
|
using AyCode.Interfaces.Users;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace AyCode.Database.DbSets.Addresses;
|
||||||
|
|
||||||
|
public interface IAcAddressDbSetBase<TAddress> where TAddress : class, IAcAddress
|
||||||
|
{
|
||||||
|
DbSet<TAddress> Addresses { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using AyCode.Interfaces.Addresses;
|
||||||
|
|
||||||
|
namespace AyCode.Database.DbSets.Addresses
|
||||||
|
{
|
||||||
|
public static class AcAddressDbSetExtensions
|
||||||
|
{
|
||||||
|
public static IQueryable<TAddress> GetAddresses<TAddress>(this IAcAddressDbSetBase<TAddress> ctx) where TAddress : class, IAcAddress
|
||||||
|
=> ctx.Addresses;
|
||||||
|
|
||||||
|
public static TAddress? GetAddressById<TAddress>(this IAcAddressDbSetBase<TAddress> ctx, Guid addressId) where TAddress : class, IAcAddress
|
||||||
|
=> ctx.GetAddresses().FirstOrDefault(x => x.Id == addressId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using AyCode.Interfaces.Addresses;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace AyCode.Entities.Addresses;
|
||||||
|
|
||||||
|
[Table("Address")]
|
||||||
|
public abstract class AcAddress : IAcAddress
|
||||||
|
{
|
||||||
|
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public double Latitude { get; set; }
|
||||||
|
public double Longitude { get; set; }
|
||||||
|
|
||||||
|
public string AddressText { get; set; }
|
||||||
|
|
||||||
|
public DateTime Created { get; set; }
|
||||||
|
public DateTime Modified { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -14,19 +14,18 @@ namespace AyCode.Entities.Profiles
|
||||||
{
|
{
|
||||||
protected AcProfile() { }
|
protected AcProfile() { }
|
||||||
|
|
||||||
protected AcProfile(Guid ownerId) : this()
|
protected AcProfile(Guid id) : this()
|
||||||
{
|
{
|
||||||
OwnerId = ownerId;
|
Id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
|
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public Guid OwnerId { get; set; }
|
|
||||||
public Guid? UserMediaId { get; set; }
|
public Guid? UserMediaId { get; set; }
|
||||||
|
|
||||||
public string? Name { get; set; }
|
public string? Name { get; set; }
|
||||||
|
|
||||||
public string? ThumbnailUrl { get ; set; }
|
public string? ThumbnailUrl { get ; set; }
|
||||||
|
|
||||||
public DateTime Created { get; set; }
|
public DateTime Created { get; set; }
|
||||||
public DateTime Modified { get; set; }
|
public DateTime Modified { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ using AyCode.Interfaces.Users;
|
||||||
namespace AyCode.Entities.Users;
|
namespace AyCode.Entities.Users;
|
||||||
|
|
||||||
[Table("UserToServiceProvider")]
|
[Table("UserToServiceProvider")]
|
||||||
public abstract class AcUserToServiceProvider<TUser, TServiceProvider> : IAcUserToServiceProvider<TUser, TServiceProvider>
|
public abstract class AcUserToServiceProvider<TUser, TServiceProvider> : IAcUserToAcServiceProvider<TUser, TServiceProvider>
|
||||||
where TUser : class, IAcUserBase
|
where TUser : class, IAcUserBase
|
||||||
where TServiceProvider : class, IAcServiceProviderBase
|
where TServiceProvider : class, IAcServiceProviderBase
|
||||||
{
|
{
|
||||||
|
|
@ -18,7 +18,7 @@ public abstract class AcUserToServiceProvider<TUser, TServiceProvider> : IAcUser
|
||||||
|
|
||||||
public virtual TUser User { get; set; }
|
public virtual TUser User { get; set; }
|
||||||
public virtual TServiceProvider ServiceProvider { get; set; }
|
public virtual TServiceProvider ServiceProvider { get; set; }
|
||||||
|
|
||||||
public DateTime Created { get; set; }
|
public DateTime Created { get; set; }
|
||||||
public DateTime Modified { get; set; }
|
public DateTime Modified { get; set; }
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
using AyCode.Interfaces.Entities;
|
||||||
|
using AyCode.Interfaces.MediaInfo;
|
||||||
|
|
||||||
|
namespace AyCode.Interfaces.Addresses.Dtos;
|
||||||
|
|
||||||
|
public interface IAcAddressDtoBase : IEntityGuid
|
||||||
|
{
|
||||||
|
public double Latitude { get; set; }
|
||||||
|
public double Longitude { get; set; }
|
||||||
|
public string AddressText { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
using AyCode.Interfaces.Addresses.Dtos;
|
||||||
|
using AyCode.Interfaces.TimeStampInfo;
|
||||||
|
|
||||||
|
namespace AyCode.Interfaces.Addresses;
|
||||||
|
|
||||||
|
public interface IAcAddress : IAcAddressDtoBase, ITimeStampInfo
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
namespace AyCode.Interfaces.Addresses;
|
||||||
|
|
||||||
|
public interface IAcAddressForeignKey
|
||||||
|
{
|
||||||
|
public Guid AddressId { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
using AyCode.Interfaces.Profiles;
|
||||||
|
using System.Formats.Tar;
|
||||||
|
using System.Net;
|
||||||
|
|
||||||
|
namespace AyCode.Interfaces.Addresses;
|
||||||
|
|
||||||
|
public interface IAcAddressRelation<TAddress> : IAcAddressForeignKey where TAddress : class, IAcAddress
|
||||||
|
{
|
||||||
|
public TAddress Address { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="Addresses\Dtos\" />
|
||||||
<Folder Include="Sessions\" />
|
<Folder Include="Sessions\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
namespace AyCode.Interfaces.Profiles;
|
|
||||||
|
|
||||||
public abstract class AcProfile : IAcProfile
|
|
||||||
{
|
|
||||||
public Guid Id { get; set; }
|
|
||||||
public Guid OwnerId { get; set; }
|
|
||||||
public Guid? UserMediaId { get; set; }
|
|
||||||
|
|
||||||
public string? Name { get; set; }
|
|
||||||
|
|
||||||
public string? ThumbnailUrl { get; set; }
|
|
||||||
|
|
||||||
public DateTime Created { get; set; }
|
|
||||||
public DateTime Modified { get; set; }
|
|
||||||
}
|
|
||||||
|
|
@ -3,7 +3,7 @@ using AyCode.Interfaces.MediaInfo;
|
||||||
|
|
||||||
namespace AyCode.Interfaces.Profiles.Dtos;
|
namespace AyCode.Interfaces.Profiles.Dtos;
|
||||||
|
|
||||||
public interface IAcProfileDtoBase : IEntityGuid, IOwnerId, IMediaInfo
|
public interface IAcProfileDtoBase : IEntityGuid, IMediaInfo
|
||||||
{
|
{
|
||||||
string? Name { get; set; }
|
string? Name { get; set; }
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
namespace AyCode.Interfaces.Profiles;
|
namespace AyCode.Interfaces.Profiles;
|
||||||
|
|
||||||
public interface IProfileForeignKey
|
public interface IAcProfileForeignKey
|
||||||
{
|
{
|
||||||
public Guid ProfileId { get; set; }
|
public Guid ProfileId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
@ -4,8 +4,7 @@ using AyCode.Interfaces.Users;
|
||||||
|
|
||||||
namespace AyCode.Interfaces.Profiles;
|
namespace AyCode.Interfaces.Profiles;
|
||||||
|
|
||||||
public interface IAcProfileRelation<TProfile> where TProfile : class, IAcProfile
|
public interface IAcProfileRelation<TProfile> : IAcProfileForeignKey where TProfile : class, IAcProfile
|
||||||
{
|
{
|
||||||
public Guid ProfileId { get; }
|
|
||||||
public TProfile Profile { get; set; }
|
public TProfile Profile { get; set; }
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
namespace AyCode.Interfaces.ServiceProviders;
|
namespace AyCode.Interfaces.ServiceProviders;
|
||||||
|
|
||||||
public interface IServiceProviderForeignKey
|
public interface IAcServiceProviderForeignKey
|
||||||
{
|
{
|
||||||
public Guid ServiceProviderId { get; set; }
|
public Guid ServiceProviderId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ using AyCode.Interfaces.Users.Dtos;
|
||||||
|
|
||||||
namespace AyCode.Interfaces.Users;
|
namespace AyCode.Interfaces.Users;
|
||||||
|
|
||||||
public interface IAcUserBase : IEntityGuid, IProfileForeignKey, IEmailAddress, IPassword, ITimeStampInfo
|
public interface IAcUserBase : IEntityGuid, IAcProfileForeignKey, IEmailAddress, IPassword, ITimeStampInfo
|
||||||
{
|
{
|
||||||
public string PhoneNumber { get; set; }
|
public string PhoneNumber { get; set; }
|
||||||
public string? RefreshToken { get; set; }
|
public string? RefreshToken { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,7 @@ public interface IAcUserListRelation<TUser, TUserToServiceProvider>
|
||||||
public List<TUserToServiceProvider> UserToServiceProviders { get; set; }
|
public List<TUserToServiceProvider> UserToServiceProviders { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IAcUserRelation<TUser> where TUser : class, IAcUserBase
|
public interface IAcUserRelation<TUser> : IUserForeignKey where TUser : class, IAcUserBase
|
||||||
{
|
{
|
||||||
public Guid UserId { get; }
|
|
||||||
public TUser User { get; set; }
|
public TUser User { get; set; }
|
||||||
}
|
}
|
||||||
|
|
@ -4,7 +4,7 @@ using AyCode.Interfaces.TimeStampInfo;
|
||||||
|
|
||||||
namespace AyCode.Interfaces.Users;
|
namespace AyCode.Interfaces.Users;
|
||||||
|
|
||||||
public interface IAcUserToServiceProvider<TUser, TServiceProvider> : IAcUserToServiceProviderBase
|
public interface IAcUserToAcServiceProvider<TUser, TServiceProvider> : IAcUserToServiceProviderBase
|
||||||
where TUser : class, IAcUserBase
|
where TUser : class, IAcUserBase
|
||||||
where TServiceProvider : class, IAcServiceProviderBase
|
where TServiceProvider : class, IAcServiceProviderBase
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,6 @@ using AyCode.Interfaces.TimeStampInfo;
|
||||||
|
|
||||||
namespace AyCode.Interfaces.Users;
|
namespace AyCode.Interfaces.Users;
|
||||||
|
|
||||||
public interface IAcUserToServiceProviderBase : IEntityGuid, IUserForeignKey, IServiceProviderForeignKey, ITimeStampInfo
|
public interface IAcUserToServiceProviderBase : IEntityGuid, IUserForeignKey, IAcServiceProviderForeignKey, ITimeStampInfo
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -24,6 +24,5 @@ public abstract class AcUserModelDtoMinBase<TUserDtoMin, TProfile, TProfileDto>
|
||||||
Profile = Activator.CreateInstance<TProfileDto>();
|
Profile = Activator.CreateInstance<TProfileDto>();
|
||||||
Profile.Id = user.Profile.Id;
|
Profile.Id = user.Profile.Id;
|
||||||
Profile.Name = user.Profile.Name;
|
Profile.Name = user.Profile.Name;
|
||||||
Profile.OwnerId = user.Profile.OwnerId;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue