Создание моделей сущности информации письма, создание и реализация интерфейсов хранения и бизнес логики
This commit is contained in:
parent
f651ef7163
commit
021cb7f8f2
@ -0,0 +1,51 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.BusinessLogicsContracts;
|
||||||
|
using CarRepairShopContracts.SearchModels;
|
||||||
|
using CarRepairShopContracts.StoragesContracts;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using CarRepairShopDataModels.Enums;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopBusinessLogic.BusinessLogics
|
||||||
|
{
|
||||||
|
public class MessageLogicInfo : IMessageInfoLogic
|
||||||
|
{
|
||||||
|
private readonly ILogger _logger;
|
||||||
|
private readonly IMessageInfoStorage _storage;
|
||||||
|
|
||||||
|
public MessageLogicInfo(ILogger logger, IMessageInfoStorage storage)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_storage = storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MessageInfoViewModel>? ReadList(MessageInfoSearchModel? model)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("ReadList. Id:{Id}", model?.MessageId);
|
||||||
|
var list = model == null ? _storage.GetFullList() : _storage.GetFilteredList(model);
|
||||||
|
if (list == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("ReadList return null list");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
_logger.LogInformation("ReadList. Count:{Count}", list.Count);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Create(MessageInfoBindingModel model)
|
||||||
|
{
|
||||||
|
if (_storage.Insert(model) == null)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Create operation failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using CarRepairShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopContracts.BindingModels
|
||||||
|
{
|
||||||
|
public class MessageInfoBindingModel : IMessageInfoModel
|
||||||
|
{
|
||||||
|
public string MessageId { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int? ClientId { get; set; }
|
||||||
|
|
||||||
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public DateTime DateDelivery { get; set; }
|
||||||
|
|
||||||
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Body { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.SearchModels;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopContracts.BusinessLogicsContracts
|
||||||
|
{
|
||||||
|
public interface IMessageInfoLogic
|
||||||
|
{
|
||||||
|
List<MessageInfoViewModel>? ReadList(MessageInfoSearchModel? model);
|
||||||
|
bool Create(MessageInfoBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class MessageInfoSearchModel
|
||||||
|
{
|
||||||
|
public string? MessageId { get; set; }
|
||||||
|
public int? ClientId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.SearchModels;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopContracts.StoragesContracts
|
||||||
|
{
|
||||||
|
public interface IMessageInfoStorage
|
||||||
|
{
|
||||||
|
List<MessageInfoViewModel> GetFullList();
|
||||||
|
List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model);
|
||||||
|
MessageInfoViewModel? GetElement(MessageInfoSearchModel model);
|
||||||
|
MessageInfoViewModel? Insert(MessageInfoBindingModel model);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
using CarRepairShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class MessageInfoViewModel : IMessageInfoModel
|
||||||
|
{
|
||||||
|
public string MessageId { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int? ClientId { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Почта отправителя")]
|
||||||
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Дата получения")]
|
||||||
|
public DateTime DateDelivery { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Заголовок")]
|
||||||
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Текст письма")]
|
||||||
|
public string Body { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopDataModels.Models
|
||||||
|
{
|
||||||
|
public interface IMessageInfoModel
|
||||||
|
{
|
||||||
|
string MessageId { get; }
|
||||||
|
int? ClientId { get; }
|
||||||
|
string SenderName { get; }
|
||||||
|
DateTime DateDelivery { get; }
|
||||||
|
string Subject { get; }
|
||||||
|
string Body { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -28,5 +28,6 @@ namespace CarRepairShopDatabaseImplement
|
|||||||
public virtual DbSet<Order> Orders { get; set; }
|
public virtual DbSet<Order> Orders { get; set; }
|
||||||
public virtual DbSet<Client> Clients { get; set; }
|
public virtual DbSet<Client> Clients { get; set; }
|
||||||
public virtual DbSet<Implementer> Implementers { get; set; }
|
public virtual DbSet<Implementer> Implementers { get; set; }
|
||||||
|
public virtual DbSet<MessageInfo> Messages { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.SearchModels;
|
||||||
|
using CarRepairShopContracts.StoragesContracts;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using CarRepairShopDatabaseImplement.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class MessageInfoStorage : IMessageInfoStorage
|
||||||
|
{
|
||||||
|
public List<MessageInfoViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
using var context = new CarRepairShopDatabase();
|
||||||
|
return context.Messages.Include(x => x.Client).Select(x => x.GetViewModel).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model)
|
||||||
|
{
|
||||||
|
if (!model.ClientId.HasValue) return new();
|
||||||
|
using var context = new CarRepairShopDatabase();
|
||||||
|
return context.Messages.Include(x => x.Client).Where(x => x.ClientId == model.ClientId).Select(x => x.GetViewModel).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model)
|
||||||
|
{
|
||||||
|
if(string.IsNullOrEmpty(model.MessageId)) return null;
|
||||||
|
using var context = new CarRepairShopDatabase();
|
||||||
|
return context.Messages.Include(x => x.Client).FirstOrDefault(x => x.MessageId.Equals(model.MessageId))?.GetViewModel;
|
||||||
|
}
|
||||||
|
public MessageInfoViewModel? Insert(MessageInfoBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new CarRepairShopDatabase();
|
||||||
|
model.ClientId = context.Clients.FirstOrDefault(x => x.Email.Equals(model.SenderName))?.Id;
|
||||||
|
var message = MessageInfo.Create(model);
|
||||||
|
if(message == null) return null;
|
||||||
|
context.Messages.Add(message);
|
||||||
|
context.SaveChanges();
|
||||||
|
return message.GetViewModel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using CarRepairShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class MessageInfo : IMessageInfoModel
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
public string MessageId { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int? ClientId { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
[Required]
|
||||||
|
public DateTime DateDelivery { get; set; }
|
||||||
|
[Required]
|
||||||
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
[Required]
|
||||||
|
public string Body { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public virtual Client Client { get; private set; }
|
||||||
|
|
||||||
|
public static MessageInfo? Create(MessageInfoBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null) return null;
|
||||||
|
return new MessageInfo
|
||||||
|
{
|
||||||
|
MessageId = model.MessageId,
|
||||||
|
ClientId = model.ClientId,
|
||||||
|
SenderName = model.SenderName,
|
||||||
|
Body = model.Body,
|
||||||
|
Subject = model.Subject,
|
||||||
|
DateDelivery = model.DateDelivery,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageInfoViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
MessageId = MessageId,
|
||||||
|
ClientId = ClientId,
|
||||||
|
SenderName = SenderName,
|
||||||
|
Body = Body,
|
||||||
|
Subject = Subject,
|
||||||
|
DateDelivery = DateDelivery,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -16,11 +16,13 @@ namespace CarRepairShopFileImplement
|
|||||||
private readonly string RepairFileName = "Repair.xml";
|
private readonly string RepairFileName = "Repair.xml";
|
||||||
private readonly string ClientFileName = "Client.xml";
|
private readonly string ClientFileName = "Client.xml";
|
||||||
private readonly string ImplementerFileName = "Implementer.xml";
|
private readonly string ImplementerFileName = "Implementer.xml";
|
||||||
|
private readonly string MessagesFileName = "MessageInfo.xml";
|
||||||
public List<Component> Components { get; private set; }
|
public List<Component> Components { get; private set; }
|
||||||
public List<Order> Orders { get; private set; }
|
public List<Order> Orders { get; private set; }
|
||||||
public List<Repair> Repairs { get; private set; }
|
public List<Repair> Repairs { get; private set; }
|
||||||
public List<Client> Clients { get; private set; }
|
public List<Client> Clients { get; private set; }
|
||||||
public List<Implementer> Implementers { get; private set; }
|
public List<Implementer> Implementers { get; private set; }
|
||||||
|
public List<MessageInfo> Messages { get; private set; }
|
||||||
public static DataFileSingleton GetInstance()
|
public static DataFileSingleton GetInstance()
|
||||||
{
|
{
|
||||||
if(instance == null)
|
if(instance == null)
|
||||||
@ -34,6 +36,7 @@ namespace CarRepairShopFileImplement
|
|||||||
public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement);
|
public void SaveOrders() => SaveData(Orders, OrderFileName, "Orders", x => x.GetXElement);
|
||||||
public void SaveClients() => SaveData(Clients, ClientFileName, "Clients", x => x.GetXElement);
|
public void SaveClients() => SaveData(Clients, ClientFileName, "Clients", x => x.GetXElement);
|
||||||
public void SaveImplementers() => SaveData(Implementers, ImplementerFileName, "Implementers", x => x.GetXElement);
|
public void SaveImplementers() => SaveData(Implementers, ImplementerFileName, "Implementers", x => x.GetXElement);
|
||||||
|
public void SaveMessages() => SaveData(Messages, MessagesFileName, "Messages", x => x.GetXElement);
|
||||||
private DataFileSingleton()
|
private DataFileSingleton()
|
||||||
{
|
{
|
||||||
Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!;
|
Components = LoadData(ComponentFileName, "Component", x => Component.Create(x)!)!;
|
||||||
@ -41,6 +44,7 @@ namespace CarRepairShopFileImplement
|
|||||||
Orders = LoadData(OrderFileName, "Order", x=> Order.Create(x)!)!;
|
Orders = LoadData(OrderFileName, "Order", x=> Order.Create(x)!)!;
|
||||||
Clients = LoadData(ClientFileName, "Client", x=> Client.Create(x)!)!;
|
Clients = LoadData(ClientFileName, "Client", x=> Client.Create(x)!)!;
|
||||||
Implementers = LoadData(ImplementerFileName, "Implementer", x=> Implementer.Create(x)!)!;
|
Implementers = LoadData(ImplementerFileName, "Implementer", x=> Implementer.Create(x)!)!;
|
||||||
|
Messages = LoadData(MessagesFileName, "MessageInfo", x => MessageInfo.Create(x)!)!;
|
||||||
}
|
}
|
||||||
private static List<T>? LoadData<T>(string filename, string xmlNodeName, Func<XElement, T> selectFunction)
|
private static List<T>? LoadData<T>(string filename, string xmlNodeName, Func<XElement, T> selectFunction)
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,47 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.SearchModels;
|
||||||
|
using CarRepairShopContracts.StoragesContracts;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using CarRepairShopFileImplement.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopFileImplement.Implements
|
||||||
|
{
|
||||||
|
public class MessageInfoStorage : IMessageInfoStorage
|
||||||
|
{
|
||||||
|
private readonly DataFileSingleton _source;
|
||||||
|
|
||||||
|
public MessageInfoStorage()
|
||||||
|
{
|
||||||
|
_source = DataFileSingleton.GetInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MessageInfoViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
return _source.Messages.Select(x => x.GetViewModel).ToList();
|
||||||
|
}
|
||||||
|
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model)
|
||||||
|
{
|
||||||
|
if (model == null) return new();
|
||||||
|
return _source.Messages.Where(x => x.ClientId == model.ClientId).Select(x => x.GetViewModel).ToList();
|
||||||
|
}
|
||||||
|
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model)
|
||||||
|
{
|
||||||
|
if(model == null) return null;
|
||||||
|
return _source.Messages.FirstOrDefault(x => x.MessageId.Equals(model.MessageId))?.GetViewModel;
|
||||||
|
}
|
||||||
|
public MessageInfoViewModel? Insert(MessageInfoBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null) return null;
|
||||||
|
var newMessage = MessageInfo.Create(model);
|
||||||
|
if(newMessage == null) return null;
|
||||||
|
_source.Messages.Add(newMessage);
|
||||||
|
_source.SaveMessages();
|
||||||
|
return newMessage.GetViewModel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using CarRepairShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace CarRepairShopFileImplement.Models
|
||||||
|
{
|
||||||
|
public class MessageInfo : IMessageInfoModel
|
||||||
|
{
|
||||||
|
public string MessageId { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int? ClientId { get; set; }
|
||||||
|
|
||||||
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public DateTime DateDelivery { get; set; }
|
||||||
|
|
||||||
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Body { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public static MessageInfo? Create(MessageInfoBindingModel? model)
|
||||||
|
{
|
||||||
|
if (model == null) return null;
|
||||||
|
return new MessageInfo()
|
||||||
|
{
|
||||||
|
MessageId = model.MessageId,
|
||||||
|
ClientId = model.ClientId,
|
||||||
|
SenderName = model.SenderName,
|
||||||
|
DateDelivery = model.DateDelivery,
|
||||||
|
Subject = model.Subject,
|
||||||
|
Body = model.Body,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MessageInfo? Create(XElement element)
|
||||||
|
{
|
||||||
|
if (element == null) return null;
|
||||||
|
return new MessageInfo()
|
||||||
|
{
|
||||||
|
MessageId = element.Attribute("MessageId")!.Value,
|
||||||
|
ClientId = Convert.ToInt32(element.Attribute("ClientId")!.Value),
|
||||||
|
SenderName = element.Element("SenderName")!.Value,
|
||||||
|
DateDelivery = Convert.ToDateTime(element.Element("DateDelivery")!.Value),
|
||||||
|
Subject = element.Attribute("Subject")!.Value,
|
||||||
|
Body = element.Attribute("Body")!.Value,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageInfoViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
MessageId = MessageId,
|
||||||
|
ClientId = ClientId,
|
||||||
|
SenderName = SenderName,
|
||||||
|
DateDelivery = DateDelivery,
|
||||||
|
Subject = Subject,
|
||||||
|
Body = Body,
|
||||||
|
};
|
||||||
|
|
||||||
|
public XElement GetXElement => new("MessageInfo",
|
||||||
|
new XAttribute("MessageId", MessageId.ToString()),
|
||||||
|
new XElement("ClientId", ClientId.ToString()),
|
||||||
|
new XElement("SenderName", SenderName),
|
||||||
|
new XElement("DateDelivery", DateDelivery),
|
||||||
|
new XElement("Subject", Subject),
|
||||||
|
new XElement("Body", Body),
|
||||||
|
new XElement("SenderName", SenderName));
|
||||||
|
}
|
||||||
|
}
|
@ -10,6 +10,7 @@ namespace CarRepairShopListImplement
|
|||||||
public List<Order> Orders { get; set; }
|
public List<Order> Orders { get; set; }
|
||||||
public List<Client> Clients { get; set; }
|
public List<Client> Clients { get; set; }
|
||||||
public List<Implementer> Implementers { get; set; }
|
public List<Implementer> Implementers { get; set; }
|
||||||
|
public List<MessageInfo> Messages { get; set; }
|
||||||
|
|
||||||
private DataListSingleton()
|
private DataListSingleton()
|
||||||
{
|
{
|
||||||
@ -18,6 +19,7 @@ namespace CarRepairShopListImplement
|
|||||||
Orders = new List<Order>();
|
Orders = new List<Order>();
|
||||||
Clients = new List<Client>();
|
Clients = new List<Client>();
|
||||||
Implementers = new List<Implementer>();
|
Implementers = new List<Implementer>();
|
||||||
|
Messages = new List<MessageInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DataListSingleton GetInstance()
|
public static DataListSingleton GetInstance()
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.SearchModels;
|
||||||
|
using CarRepairShopContracts.StoragesContracts;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using CarRepairShopListImplement.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopListImplement.Implements
|
||||||
|
{
|
||||||
|
public class MessageInfoStorage : IMessageInfoStorage
|
||||||
|
{
|
||||||
|
|
||||||
|
private readonly DataListSingleton _source;
|
||||||
|
|
||||||
|
public MessageInfoStorage()
|
||||||
|
{
|
||||||
|
_source = DataListSingleton.GetInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MessageInfoViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
var list = new List<MessageInfoViewModel>();
|
||||||
|
foreach(var message in _source.Messages)
|
||||||
|
{
|
||||||
|
list.Add(message.GetViewModel);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model)
|
||||||
|
{
|
||||||
|
var list = new List<MessageInfoViewModel>();
|
||||||
|
if(!model.ClientId.HasValue) return list;
|
||||||
|
foreach(var message in _source.Messages)
|
||||||
|
{
|
||||||
|
if(model.ClientId == message.ClientId)
|
||||||
|
{
|
||||||
|
list.Add(message.GetViewModel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model)
|
||||||
|
{
|
||||||
|
if(string.IsNullOrEmpty(model.MessageId)) return null;
|
||||||
|
|
||||||
|
foreach(var message in _source.Messages)
|
||||||
|
{
|
||||||
|
if (model.MessageId.Equals(model.MessageId))
|
||||||
|
{
|
||||||
|
return message.GetViewModel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
public MessageInfoViewModel? Insert(MessageInfoBindingModel model)
|
||||||
|
{
|
||||||
|
var newMessage = MessageInfo.Create(model);
|
||||||
|
if(newMessage == null) return null;
|
||||||
|
_source.Messages.Add(newMessage);
|
||||||
|
return newMessage.GetViewModel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
using CarRepairShopContracts.BindingModels;
|
||||||
|
using CarRepairShopContracts.ViewModels;
|
||||||
|
using CarRepairShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CarRepairShopListImplement.Models
|
||||||
|
{
|
||||||
|
public class MessageInfo : IMessageInfoModel
|
||||||
|
{
|
||||||
|
public string MessageId { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int? ClientId { get; set; }
|
||||||
|
|
||||||
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public DateTime DateDelivery { get; set; }
|
||||||
|
|
||||||
|
public string Subject { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Body { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public static MessageInfo? Create(MessageInfoBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null) return null;
|
||||||
|
return new MessageInfo()
|
||||||
|
{
|
||||||
|
MessageId = model.MessageId,
|
||||||
|
ClientId = model.ClientId,
|
||||||
|
SenderName = model.SenderName,
|
||||||
|
DateDelivery = model.DateDelivery,
|
||||||
|
Subject = model.Subject,
|
||||||
|
Body = model.Body,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessageInfoViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
MessageId = MessageId,
|
||||||
|
ClientId = ClientId,
|
||||||
|
SenderName = SenderName,
|
||||||
|
DateDelivery = DateDelivery,
|
||||||
|
Subject = Subject,
|
||||||
|
Body = Body,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -5,5 +5,13 @@
|
|||||||
"Microsoft.AspNetCore": "Warning"
|
"Microsoft.AspNetCore": "Warning"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*"
|
"AllowedHosts": "*",
|
||||||
|
|
||||||
|
"SmtpClientHost": "smtp.gmail.com",
|
||||||
|
"SmtpClientPort": "587",
|
||||||
|
"PopHost": "pop.gmail.com",
|
||||||
|
"PopPort": "995",
|
||||||
|
"MailLogin": "labwork7@mail.com",
|
||||||
|
"MailPassword": "#eoxSyN1aJS1"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
11
CarRepairShop/CarRepairShopView/App.config
Normal file
11
CarRepairShop/CarRepairShopView/App.config
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<appSettings>
|
||||||
|
<add key="SmtpClientHost" value="smtp.gmail.com" />
|
||||||
|
<add key="SmtpClientPort" value="587" />
|
||||||
|
<add key="PopHost" value="pop.gmail.com" />
|
||||||
|
<add key="PopPort" value="995" />
|
||||||
|
<add key="MailLogin" value="labwork7@mail.com" />
|
||||||
|
<add key="MailPassword" value="#eoxSyN1aJS1" />
|
||||||
|
</appSettings>
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue
Block a user