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)
|
||||
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;
|
||||
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(Guid ownerId) : this()
|
||||
protected AcProfile(Guid id) : this()
|
||||
{
|
||||
OwnerId = ownerId;
|
||||
Id = id;
|
||||
}
|
||||
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
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; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ using AyCode.Interfaces.Users;
|
|||
namespace AyCode.Entities.Users;
|
||||
|
||||
[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 TServiceProvider : class, IAcServiceProviderBase
|
||||
{
|
||||
|
|
@ -18,7 +18,7 @@ public abstract class AcUserToServiceProvider<TUser, TServiceProvider> : IAcUser
|
|||
|
||||
public virtual TUser User { get; set; }
|
||||
public virtual TServiceProvider ServiceProvider { get; set; }
|
||||
|
||||
|
||||
public DateTime Created { 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>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Addresses\Dtos\" />
|
||||
<Folder Include="Sessions\" />
|
||||
</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;
|
||||
|
||||
public interface IAcProfileDtoBase : IEntityGuid, IOwnerId, IMediaInfo
|
||||
public interface IAcProfileDtoBase : IEntityGuid, IMediaInfo
|
||||
{
|
||||
string? Name { get; set; }
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
namespace AyCode.Interfaces.Profiles;
|
||||
|
||||
public interface IProfileForeignKey
|
||||
public interface IAcProfileForeignKey
|
||||
{
|
||||
public Guid ProfileId { get; set; }
|
||||
}
|
||||
|
|
@ -4,8 +4,7 @@ using AyCode.Interfaces.Users;
|
|||
|
||||
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; }
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
namespace AyCode.Interfaces.ServiceProviders;
|
||||
|
||||
public interface IServiceProviderForeignKey
|
||||
public interface IAcServiceProviderForeignKey
|
||||
{
|
||||
public Guid ServiceProviderId { get; set; }
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ using AyCode.Interfaces.Users.Dtos;
|
|||
|
||||
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? RefreshToken { get; set; }
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@ public interface IAcUserListRelation<TUser, TUserToServiceProvider>
|
|||
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; }
|
||||
}
|
||||
|
|
@ -4,7 +4,7 @@ using AyCode.Interfaces.TimeStampInfo;
|
|||
|
||||
namespace AyCode.Interfaces.Users;
|
||||
|
||||
public interface IAcUserToServiceProvider<TUser, TServiceProvider> : IAcUserToServiceProviderBase
|
||||
public interface IAcUserToAcServiceProvider<TUser, TServiceProvider> : IAcUserToServiceProviderBase
|
||||
where TUser : class, IAcUserBase
|
||||
where TServiceProvider : class, IAcServiceProviderBase
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@ using AyCode.Interfaces.TimeStampInfo;
|
|||
|
||||
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.Id = user.Profile.Id;
|
||||
Profile.Name = user.Profile.Name;
|
||||
Profile.OwnerId = user.Profile.OwnerId;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue