implement backup
This commit is contained in:
parent
596402e69e
commit
9e39f2944b
@ -0,0 +1,99 @@
|
|||||||
|
using FlowerShopContracts.BindingModels;
|
||||||
|
using FlowerShopContracts.BusinessLogicsContracts;
|
||||||
|
using FlowerShopContracts.StoragesContracts;
|
||||||
|
using FlowerShopDataModels;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.IO.Compression;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.Serialization.Json;
|
||||||
|
|
||||||
|
namespace FlowerShopBusinessLogic.BusinessLogics
|
||||||
|
{
|
||||||
|
public class BackUpLogic : IBackUpLogic
|
||||||
|
{
|
||||||
|
private readonly ILogger _logger;
|
||||||
|
private readonly IBackUpInfo _backUpInfo;
|
||||||
|
public BackUpLogic(ILogger<BackUpLogic> logger, IBackUpInfo backUpInfo)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_backUpInfo = backUpInfo;
|
||||||
|
}
|
||||||
|
public void CreateBackUp(BackUpSaveBinidngModel model)
|
||||||
|
{
|
||||||
|
if (_backUpInfo == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_logger.LogDebug("Clear folder");
|
||||||
|
// зачистка папки и удаление старого архива
|
||||||
|
var dirInfo = new DirectoryInfo(model.FolderName);
|
||||||
|
if (dirInfo.Exists)
|
||||||
|
{
|
||||||
|
foreach (var file in dirInfo.GetFiles())
|
||||||
|
{
|
||||||
|
file.Delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_logger.LogDebug("Delete archive");
|
||||||
|
string fileName = $"{model.FolderName}.zip";
|
||||||
|
if (File.Exists(fileName))
|
||||||
|
{
|
||||||
|
File.Delete(fileName);
|
||||||
|
}
|
||||||
|
// берем метод для сохранения
|
||||||
|
_logger.LogDebug("Get assembly");
|
||||||
|
var typeIId = typeof(IId);
|
||||||
|
var assembly = typeIId.Assembly;
|
||||||
|
if (assembly == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("Сборка не найдена", nameof(assembly));
|
||||||
|
}
|
||||||
|
var types = assembly.GetTypes();
|
||||||
|
var method = GetType().GetMethod("SaveToFile", BindingFlags.NonPublic | BindingFlags.Instance);
|
||||||
|
_logger.LogDebug("Find {count} types", types.Length);
|
||||||
|
foreach (var type in types)
|
||||||
|
{
|
||||||
|
if (type.IsInterface && type.GetInterface(typeIId.Name) !=
|
||||||
|
null)
|
||||||
|
{
|
||||||
|
var modelType = _backUpInfo.GetTypeByModelInterface(type.Name);
|
||||||
|
if (modelType == null)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException($"Не найден класc-модель для { type.Name }");
|
||||||
|
}
|
||||||
|
_logger.LogDebug("Call SaveToFile method for {name} type", type.Name);
|
||||||
|
// вызываем метод на выполнение
|
||||||
|
method?.MakeGenericMethod(modelType).Invoke(this, new object[]
|
||||||
|
{
|
||||||
|
model.FolderName
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_logger.LogDebug("Create zip and remove folder");
|
||||||
|
// архивируем
|
||||||
|
ZipFile.CreateFromDirectory(model.FolderName, fileName);
|
||||||
|
// удаляем папку
|
||||||
|
dirInfo.Delete(true);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void SaveToFile<T>(string folderName) where T : class, new()
|
||||||
|
{
|
||||||
|
var records = _backUpInfo.GetList<T>();
|
||||||
|
if (records == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("{type} type get null list", typeof(T).Name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var jsonFormatter = new DataContractJsonSerializer(typeof(List<T>));
|
||||||
|
using var fs = new FileStream(string.Format("{0}/{1}.json", folderName, typeof(T).Name), FileMode.OpenOrCreate);
|
||||||
|
jsonFormatter.WriteObject(fs, records);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -18,7 +18,7 @@ namespace FlowerShopContracts.ViewModels
|
|||||||
public string FlowerName { get; set; } = string.Empty;
|
public string FlowerName { get; set; } = string.Empty;
|
||||||
[Column(title: "ФИО клиента", width: 120)]
|
[Column(title: "ФИО клиента", width: 120)]
|
||||||
public string ClientFIO { get; set; } = string.Empty;
|
public string ClientFIO { get; set; } = string.Empty;
|
||||||
[Column(title: "Почта клиента", width: 190]
|
[Column(title: "Почта клиента", width: 190)]
|
||||||
public string ClientEmail { get; set; } = string.Empty;
|
public string ClientEmail { get; set; } = string.Empty;
|
||||||
[Column(title: "ФИО исполнителя", width: 120)]
|
[Column(title: "ФИО исполнителя", width: 120)]
|
||||||
public string ImplementerFIO { get; set; }=string.Empty;
|
public string ImplementerFIO { get; set; }=string.Empty;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
namespace FlowerShopDataModels.Models
|
namespace FlowerShopDataModels.Models
|
||||||
{
|
{
|
||||||
public interface IMessageInfoModel
|
public interface IMessageInfoModel : IId
|
||||||
{
|
{
|
||||||
string MessageId { get; }
|
string MessageId { get; }
|
||||||
int? ClientId { get; }
|
int? ClientId { get; }
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
using FlowerShopContracts.StoragesContracts;
|
||||||
|
|
||||||
|
namespace FlowerShopDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class BackUpInfo : IBackUpInfo
|
||||||
|
{
|
||||||
|
public List<T>? GetList<T>() where T : class, new()
|
||||||
|
{
|
||||||
|
using var context = new FlowerShopDatabase();
|
||||||
|
return context.Set<T>().ToList();
|
||||||
|
}
|
||||||
|
public Type? GetTypeByModelInterface(string modelInterfaceName)
|
||||||
|
{
|
||||||
|
var assembly = typeof(BackUpInfo).Assembly;
|
||||||
|
var types = assembly.GetTypes();
|
||||||
|
foreach (var type in types)
|
||||||
|
{
|
||||||
|
if (type.IsClass && type.GetInterface(modelInterfaceName) != null)
|
||||||
|
{
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,17 +3,23 @@ using FlowerShopContracts.ViewModels;
|
|||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace FlowerShopDatabaseImplement.Models
|
namespace FlowerShopDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
public class Client : IClientModel
|
[DataContract]
|
||||||
|
public class Client : IClientModel
|
||||||
{
|
{
|
||||||
public int Id { get; private set; }
|
[DataMember]
|
||||||
[Required]
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public string ClientFIO { get; private set; } = string.Empty;
|
public string ClientFIO { get; private set; } = string.Empty;
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public string Email { get; private set; } = string.Empty;
|
public string Email { get; private set; } = string.Empty;
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public string Password { get; private set; } = string.Empty;
|
public string Password { get; private set; } = string.Empty;
|
||||||
public static Client? Create(ClientBindingModel model)
|
public static Client? Create(ClientBindingModel model)
|
||||||
{
|
{
|
||||||
|
@ -3,15 +3,20 @@ using FlowerShopContracts.ViewModels;
|
|||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace FlowerShopDatabaseImplement.Models
|
namespace FlowerShopDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Component : IComponentModel
|
public class Component : IComponentModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public string ComponentName { get; private set; } = string.Empty;
|
public string ComponentName { get; private set; } = string.Empty;
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public double Cost { get; set; }
|
public double Cost { get; set; }
|
||||||
[ForeignKey("ComponentId")]
|
[ForeignKey("ComponentId")]
|
||||||
public virtual List<FlowerComponent> FlowerComponents { get; set; } =
|
public virtual List<FlowerComponent> FlowerComponents { get; set; } =
|
||||||
|
@ -3,18 +3,24 @@ using FlowerShopContracts.ViewModels;
|
|||||||
using FlowerShopContracts.BindingModels;
|
using FlowerShopContracts.BindingModels;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace FlowerShopDatabaseImplement.Models
|
namespace FlowerShopDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Flower : IFlowerModel
|
public class Flower : IFlowerModel
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
[DataMember]
|
||||||
[Required]
|
public int Id { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public string FlowerName { get; set; } = string.Empty;
|
public string FlowerName { get; set; } = string.Empty;
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public double Price { get; set; }
|
public double Price { get; set; }
|
||||||
private Dictionary<int, (IComponentModel, int)>? _FlowerComponents = null;
|
private Dictionary<int, (IComponentModel, int)>? _FlowerComponents = null;
|
||||||
[NotMapped]
|
[DataMember]
|
||||||
|
[NotMapped]
|
||||||
public Dictionary<int, (IComponentModel, int)> FlowerComponents
|
public Dictionary<int, (IComponentModel, int)> FlowerComponents
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -3,18 +3,25 @@ using FlowerShopContracts.ViewModels;
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace FlowerShopDatabaseImplement.Models
|
namespace FlowerShopDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Implementer : IImplementerModel
|
public class Implementer : IImplementerModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public string ImplementerFIO { get; set; } = string.Empty;
|
public string ImplementerFIO { get; set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public string Password { get; set; } = string.Empty;
|
public string Password { get; set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public int WorkExperience { get; set; }
|
public int WorkExperience { get; set; }
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public int Qualification { get; set; }
|
public int Qualification { get; set; }
|
||||||
[ForeignKey("ImplementerId")]
|
[ForeignKey("ImplementerId")]
|
||||||
|
@ -2,18 +2,28 @@
|
|||||||
using FlowerShopContracts.ViewModels;
|
using FlowerShopContracts.ViewModels;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace FlowerShopDatabaseImplement.Models
|
namespace FlowerShopDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class MessageInfo : IMessageInfoModel
|
public class MessageInfo : IMessageInfoModel
|
||||||
{
|
{
|
||||||
[Key]
|
[DataMember]
|
||||||
|
public int Id { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
[Key]
|
||||||
public string MessageId { get; set; } = string.Empty;
|
public string MessageId { get; set; } = string.Empty;
|
||||||
public int? ClientId { get; set; }
|
[DataMember]
|
||||||
public string SenderName { get; set; } = string.Empty;
|
public int? ClientId { get; set; }
|
||||||
public DateTime DateDelivery { get; set; }
|
[DataMember]
|
||||||
public string Subject { get; set; } = string.Empty;
|
public string SenderName { get; set; } = string.Empty;
|
||||||
public string Body { get; set; } = string.Empty;
|
[DataMember]
|
||||||
|
public DateTime DateDelivery { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
|
public string Body { get; set; } = string.Empty;
|
||||||
|
|
||||||
public static MessageInfo? Create(MessageInfoBindingModel? model)
|
public static MessageInfo? Create(MessageInfoBindingModel? model)
|
||||||
{
|
{
|
||||||
|
@ -3,27 +3,40 @@ using FlowerShopContracts.ViewModels;
|
|||||||
using FlowerShopDataModels.Enums;
|
using FlowerShopDataModels.Enums;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace FlowerShopDatabaseImplement.Models
|
namespace FlowerShopDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Order : IOrderModel
|
public class Order : IOrderModel
|
||||||
{
|
{
|
||||||
public int Id { get; private set; }
|
[DataMember]
|
||||||
public int FlowerId { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
|
[Required]
|
||||||
|
public int FlowerId { get; private set; }
|
||||||
public virtual Flower Flower { get; set; }
|
public virtual Flower Flower { get; set; }
|
||||||
public int ClientId { get; private set; }
|
[DataMember]
|
||||||
|
[Required]
|
||||||
|
public int ClientId { get; private set; }
|
||||||
public virtual Client Client { get; set; }
|
public virtual Client Client { get; set; }
|
||||||
public int? ImplementerId { get; private set; }
|
[DataMember]
|
||||||
|
public int? ImplementerId { get; private set; }
|
||||||
public virtual Implementer? Implementer { get; set; }
|
public virtual Implementer? Implementer { get; set; }
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public double Sum { get; private set; }
|
public double Sum { get; private set; }
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public OrderStatus Status { get; private set; }
|
public OrderStatus Status { get; private set; }
|
||||||
[Required]
|
[DataMember]
|
||||||
|
[Required]
|
||||||
public DateTime DateCreate { get; private set; }
|
public DateTime DateCreate { get; private set; }
|
||||||
public DateTime? DateImplement { get; private set; }
|
[DataMember]
|
||||||
|
public DateTime? DateImplement { get; private set; }
|
||||||
public static Order? Create(OrderBindingModel? model)
|
public static Order? Create(OrderBindingModel? model)
|
||||||
{
|
{
|
||||||
if (model == null)
|
if (model == null)
|
||||||
|
42
FlowerShop/FlowerShopFileImplement/Implements/BackUpInfo.cs
Normal file
42
FlowerShop/FlowerShopFileImplement/Implements/BackUpInfo.cs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
using FlowerShopContracts.StoragesContracts;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace FlowerShopFileImplement.Implements
|
||||||
|
{
|
||||||
|
public class BackUpInfo : IBackUpInfo
|
||||||
|
{
|
||||||
|
private readonly DataFileSingleton _source;
|
||||||
|
private readonly PropertyInfo[] _sourceProperties;
|
||||||
|
|
||||||
|
public BackUpInfo()
|
||||||
|
{
|
||||||
|
_source = DataFileSingleton.GetInstance();
|
||||||
|
_sourceProperties = _source.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<T>? GetList<T>() where T : class, new()
|
||||||
|
{
|
||||||
|
var RequredType = typeof(T);
|
||||||
|
|
||||||
|
return (List<T>?)_sourceProperties
|
||||||
|
.FirstOrDefault(x => x.PropertyType.IsGenericType && x.PropertyType.GetGenericArguments()[0] == RequredType)
|
||||||
|
?.GetValue(_source);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Type? GetTypeByModelInterface(string ModelInterfaceName)
|
||||||
|
{
|
||||||
|
var Assembly = typeof(BackUpInfo).Assembly;
|
||||||
|
var Types = Assembly.GetTypes();
|
||||||
|
|
||||||
|
foreach (var Type in Types)
|
||||||
|
{
|
||||||
|
if (Type.IsClass && Type.GetInterface(ModelInterfaceName) != null)
|
||||||
|
{
|
||||||
|
return Type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +1,22 @@
|
|||||||
using FlowerShopContracts.BindingModels;
|
using FlowerShopContracts.BindingModels;
|
||||||
using FlowerShopContracts.ViewModels;
|
using FlowerShopContracts.ViewModels;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace FlowerShopFileImplement.Models
|
namespace FlowerShopFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Client : IClientModel
|
public class Client : IClientModel
|
||||||
{
|
{
|
||||||
public int Id { get; private set; }
|
[DataMember]
|
||||||
public string ClientFIO { get; private set; } = string.Empty;
|
public int Id { get; private set; }
|
||||||
public string Email { get; private set; } = string.Empty;
|
[DataMember]
|
||||||
public string Password { get; private set; } = string.Empty;
|
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)
|
public static Client? Create(ClientBindingModel model)
|
||||||
{
|
{
|
||||||
if (model == null)
|
if (model == null)
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
using FlowerShopContracts.BindingModels;
|
using FlowerShopContracts.BindingModels;
|
||||||
using FlowerShopContracts.ViewModels;
|
using FlowerShopContracts.ViewModels;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace FlowerShopFileImplement.Models
|
namespace FlowerShopFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Component : IComponentModel
|
public class Component : IComponentModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public string ComponentName { get; private set; } = string.Empty;
|
public string ComponentName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public double Cost { get; set; }
|
public double Cost { get; set; }
|
||||||
public static Component? Create(ComponentBindingModel model)
|
public static Component? Create(ComponentBindingModel model)
|
||||||
{
|
{
|
||||||
|
@ -1,18 +1,24 @@
|
|||||||
using FlowerShopContracts.BindingModels;
|
using FlowerShopContracts.BindingModels;
|
||||||
using FlowerShopContracts.ViewModels;
|
using FlowerShopContracts.ViewModels;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace FlowerShopFileImplement.Models
|
namespace FlowerShopFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Flower : IFlowerModel
|
public class Flower : IFlowerModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
public string FlowerName { get; private set; } = string.Empty;
|
[DataMember]
|
||||||
public double Price { get; private set; }
|
public string FlowerName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
|
public double Price { get; private set; }
|
||||||
public Dictionary<int, int> Components { get; private set; } = new();
|
public Dictionary<int, int> Components { get; private set; } = new();
|
||||||
private Dictionary<int, (IComponentModel, int)>? _flowerComponents = null;
|
private Dictionary<int, (IComponentModel, int)>? _flowerComponents = null;
|
||||||
public Dictionary<int, (IComponentModel, int)> FlowerComponents
|
[DataMember]
|
||||||
|
public Dictionary<int, (IComponentModel, int)> FlowerComponents
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -1,16 +1,23 @@
|
|||||||
using FlowerShopContracts.BindingModels;
|
using FlowerShopContracts.BindingModels;
|
||||||
using FlowerShopContracts.ViewModels;
|
using FlowerShopContracts.ViewModels;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace FlowerShopFileImplement.Models
|
namespace FlowerShopFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Implementer : IImplementerModel
|
public class Implementer : IImplementerModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public string ImplementerFIO { get; private set; } = string.Empty;
|
public string ImplementerFIO { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public string Password { get; private set; } = string.Empty;
|
public string Password { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public int WorkExperience { get; private set; }
|
public int WorkExperience { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public int Qualification { get; private set; }
|
public int Qualification { get; private set; }
|
||||||
public static Implementer? Create(ImplementerBindingModel Model)
|
public static Implementer? Create(ImplementerBindingModel Model)
|
||||||
{
|
{
|
||||||
|
@ -1,23 +1,28 @@
|
|||||||
using FlowerShopContracts.BindingModels;
|
using FlowerShopContracts.BindingModels;
|
||||||
using FlowerShopContracts.ViewModels;
|
using FlowerShopContracts.ViewModels;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
using System;
|
using System.Runtime.Serialization;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace FlowerShopFileImplement.Models
|
namespace FlowerShopFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class MessageInfo : IMessageInfoModel
|
public class MessageInfo : IMessageInfoModel
|
||||||
{
|
{
|
||||||
public string MessageId { get; set; } = string.Empty;
|
[DataMember]
|
||||||
public int? ClientId { get; set; }
|
public int Id { get; set; }
|
||||||
public string SenderName { get; set; } = string.Empty;
|
[DataMember]
|
||||||
public DateTime DateDelivery { get; set; }
|
public string MessageId { get; set; } = string.Empty;
|
||||||
public string Subject { get; set; } = string.Empty;
|
[DataMember]
|
||||||
public string Body { get; set; } = string.Empty;
|
public int? ClientId { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
|
public DateTime DateDelivery { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
|
public string Body { get; set; } = string.Empty;
|
||||||
|
|
||||||
public static MessageInfo? Create(MessageInfoBindingModel? model)
|
public static MessageInfo? Create(MessageInfoBindingModel? model)
|
||||||
{
|
{
|
||||||
|
@ -2,21 +2,32 @@
|
|||||||
using FlowerShopContracts.ViewModels;
|
using FlowerShopContracts.ViewModels;
|
||||||
using FlowerShopDataModels.Enums;
|
using FlowerShopDataModels.Enums;
|
||||||
using FlowerShopDataModels.Models;
|
using FlowerShopDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace FlowerShopFileImplement.Models
|
namespace FlowerShopFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Order : IOrderModel
|
public class Order : IOrderModel
|
||||||
{
|
{
|
||||||
public int Id { get; private set; }
|
[DataMember]
|
||||||
public int FlowerId { get; private set; }
|
public int Id { get; private set; }
|
||||||
public int ClientId { get; private set; }
|
[DataMember]
|
||||||
public int? ImplementerId { get; private set; }
|
public int FlowerId { get; private set; }
|
||||||
public int Count { get; private set; }
|
[DataMember]
|
||||||
public double Sum { get; set; }
|
public int ClientId { get; private set; }
|
||||||
public OrderStatus Status { get; set; }
|
[DataMember]
|
||||||
public DateTime DateCreate { get; set; }
|
public int? ImplementerId { get; private set; }
|
||||||
public DateTime? DateImplement { get; set; }
|
[DataMember]
|
||||||
|
public int Count { get; private set; }
|
||||||
|
[DataMember]
|
||||||
|
public double Sum { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
public OrderStatus Status { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
public DateTime DateCreate { get; set; }
|
||||||
|
[DataMember]
|
||||||
|
public DateTime? DateImplement { get; set; }
|
||||||
public static Order? Create(OrderBindingModel model)
|
public static Order? Create(OrderBindingModel model)
|
||||||
{
|
{
|
||||||
if (model == null)
|
if (model == null)
|
||||||
|
@ -6,6 +6,7 @@ namespace FlowerShopListImplement.Models
|
|||||||
{
|
{
|
||||||
public class MessageInfo : IMessageInfoModel
|
public class MessageInfo : IMessageInfoModel
|
||||||
{
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
public string MessageId { get; set; } = string.Empty;
|
public string MessageId { get; set; } = string.Empty;
|
||||||
public int? ClientId { get; set; }
|
public int? ClientId { get; set; }
|
||||||
public string SenderName { get; set; } = string.Empty;
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user