Реализовал логику бекапов для проекта хранения в файлах

This commit is contained in:
Никита Потапов 2024-05-19 20:36:27 +04:00
parent beb88bcd82
commit 622fddbe67
7 changed files with 82 additions and 0 deletions

View File

@ -0,0 +1,39 @@
using SecuritySystemContracts.StoragesContracts;
namespace SecuritySystemFileImplement.Implements
{
public class BackUpInfoStorage : IBackUpInfoStorage
{
private readonly DataFileSingleton source;
public BackUpInfoStorage()
{
source = DataFileSingleton.GetInstance();
}
public List<T>? GetList<T>() where T : class, new()
{
return (List<T>?)source
.GetType()
.GetProperties()
.FirstOrDefault(
x =>
x.PropertyType.IsGenericType &&
x.PropertyType.GetGenericArguments()[0] == typeof(T))?
.GetValue(source);
}
public Type? GetTypeByModelInterface(string modelInterfaceName)
{
var assembly = typeof(BackUpInfoStorage).Assembly;
var types = assembly.GetTypes();
foreach (var type in types)
{
if (type.IsClass &&
type.GetInterface(modelInterfaceName) != null)
{
return type;
}
}
return null;
}
}
}

View File

@ -3,15 +3,21 @@ using SecuritySystemContracts.ViewModels;
using SecuritySystemDataModels.Models;
using SecuritySystemFileImplement.Models;
using System.Reflection;
using System.Runtime.Serialization;
using System.Xml.Linq;
namespace SecuritySystemFileImplement.Models
{
[DataContract]
public class Client : IClientModel
{
[DataMember]
public int Id { get; private set; }
[DataMember]
public string ClientFIO { get; private set; } = string.Empty;
[DataMember]
public string Email { get; private set; } = string.Empty;
[DataMember]
public string Password { get; private set; } = string.Empty;
public static Client? Create(ClientBindingModel model)
{

View File

@ -1,14 +1,19 @@
using SecuritySystemContracts.BindingModels;
using SecuritySystemContracts.ViewModels;
using SecuritySystemDataModels.Models;
using System.Runtime.Serialization;
using System.Xml.Linq;
namespace SecuritySystemFileImplement.Models
{
[DataContract]
public class Component : IComponentModel
{
[DataMember]
public int Id { get; private set; }
[DataMember]
public string ComponentName { get; private set; } = string.Empty;
[DataMember]
public double Cost { get; set; }
public static Component? Create(ComponentBindingModel model)
{

View File

@ -1,16 +1,23 @@
using SecuritySystemContracts.BindingModels;
using SecuritySystemContracts.ViewModels;
using SecuritySystemDataModels.Models;
using System.Runtime.Serialization;
using System.Xml.Linq;
namespace SecuritySystemFileImplement.Models
{
[DataContract]
public class Implementer : IImplementerModel
{
[DataMember]
public string ImplementerFIO { get; private set; } = string.Empty;
[DataMember]
public string Password { get; private set; } = string.Empty;
[DataMember]
public int WorkExperience { get; private set; }
[DataMember]
public int Qualification { get; private set; }
[DataMember]
public int Id { get; private set; }
public static Implementer? Create(ImplementerBindingModel model)
{

View File

@ -2,17 +2,25 @@
using SecuritySystemContracts.ViewModels;
using SecuritySystemDataModels.Models;
using System.Reflection;
using System.Runtime.Serialization;
using System.Xml.Linq;
namespace SecuritySystemFileImplement.Models
{
[DataContract]
public class MessageInfo : IMessageInfoModel
{
[DataMember]
public string MessageId { get; set; } = string.Empty;
[DataMember]
public int? ClientId { get; set; }
[DataMember]
public string SenderName { get; set; } = string.Empty;
[DataMember]
public DateTime DateDelivery { get; set; } = DateTime.Now;
[DataMember]
public string Subject { get; set; } = string.Empty;
[DataMember]
public string Body { get; set; } = string.Empty;
public static MessageInfo? Create(MessageInfoBindingModel model)

View File

@ -2,20 +2,31 @@
using SecuritySystemContracts.ViewModels;
using SecuritySystemDataModels.Enums;
using SecuritySystemDataModels.Models;
using System.Runtime.Serialization;
using System.Xml.Linq;
namespace SecuritySystemFileImplement.Models
{
[DataContract]
public class Order : IOrderModel
{
[DataMember]
public int Id { get; private set; }
[DataMember]
public int SecureId { get; private set; }
[DataMember]
public int ClientId { get; private set; }
[DataMember]
public int? ImplementerId { get; private set; }
[DataMember]
public int Count { get; private set; }
[DataMember]
public double Sum { get; private set; }
[DataMember]
public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен;
[DataMember]
public DateTime DateCreate { get; private set; } = DateTime.Now;
[DataMember]
public DateTime? DateImplement { get; private set; }
public static Order? Create(OrderBindingModel? model)

View File

@ -1,17 +1,23 @@
using SecuritySystemContracts.BindingModels;
using SecuritySystemContracts.ViewModels;
using SecuritySystemDataModels.Models;
using System.Runtime.Serialization;
using System.Xml.Linq;
namespace SecuritySystemFileImplement.Models
{
[DataContract]
public class Secure : ISecureModel
{
[DataMember]
public int Id { get; private set; }
[DataMember]
public string SecureName { get; private set; } = string.Empty;
[DataMember]
public double Price { get; private set; }
public Dictionary<int, int> Components { get; private set; } = new();
private Dictionary<int, (IComponentModel, int)>? _secureComponents = null;
[DataMember]
public Dictionary<int, (IComponentModel, int)> SecureComponents
{
get