ISEbd-21.Fedotov.I.A.LabWork07 #7
@ -0,0 +1,22 @@
|
||||
using DinerDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerContracts.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 DinerContracts.BindingModels;
|
||||
using DinerContracts.SearchModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerContracts.BusinessLogicsContracts {
|
||||
public interface IMessageInfoLogic {
|
||||
|
||||
List<MessageInfoViewModel>? ReadList(MessageInfoSearchModel? model);
|
||||
|
||||
bool Create(MessageInfoBindingModel model);
|
||||
}
|
||||
}
|
17
Diner/DinerContracts/SearchModels/IMessageInfoStorage.cs
Normal file
17
Diner/DinerContracts/SearchModels/IMessageInfoStorage.cs
Normal file
@ -0,0 +1,17 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerContracts.SearchModels {
|
||||
public interface IMessageInfoStorage {
|
||||
List<MessageInfoViewModel> GetFullList();
|
||||
List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model);
|
||||
|
||||
MessageInfoViewModel? GetElement(MessageInfoSearchModel model);
|
||||
MessageInfoViewModel? Insert(MessageInfoBindingModel model);
|
||||
}
|
||||
}
|
14
Diner/DinerContracts/SearchModels/MessageInfoSearchModel.cs
Normal file
14
Diner/DinerContracts/SearchModels/MessageInfoSearchModel.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerContracts.SearchModels
|
||||
{
|
||||
public class MessageInfoSearchModel
|
||||
{
|
||||
public int? ClientID { get; set; }
|
||||
public string? MessageID { get; set; }
|
||||
}
|
||||
}
|
27
Diner/DinerContracts/ViewModels/MessageInfoViewModel.cs
Normal file
27
Diner/DinerContracts/ViewModels/MessageInfoViewModel.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using DinerDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerContracts.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;
|
||||
}
|
||||
}
|
@ -17,5 +17,6 @@ namespace DinerDataBaseImplement
|
||||
public virtual DbSet<Order> Orders { get; set; }
|
||||
public virtual DbSet<Client> Clients { get; set; }
|
||||
public virtual DbSet<Implementer> Implementers { get; set; }
|
||||
public virtual DbSet<MessageInfo> MessageInfos { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.SearchModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using DinerDataBaseImplement.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerDataBaseImplement.Implements {
|
||||
public class MessageInfoStorage : IMessageInfoStorage {
|
||||
|
||||
public MessageInfoViewModel? Insert(MessageInfoBindingModel model) {
|
||||
using var context = new DinerDatabaseBy6Work();
|
||||
var newMessageInfo = MessageInfo.Create(context, model);
|
||||
if (newMessageInfo == null) {
|
||||
return null;
|
||||
}
|
||||
context.MessageInfos.Add(newMessageInfo);
|
||||
context.SaveChanges();
|
||||
return newMessageInfo.GetViewModel;
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) {
|
||||
using var context = new DinerDatabaseBy6Work();
|
||||
if (!string.IsNullOrEmpty(model.MessageID)) {
|
||||
return context.MessageInfos.FirstOrDefault(x => string.IsNullOrEmpty(model.MessageID) &&
|
||||
model.MessageID == x.MessageID)?.GetViewModel;
|
||||
}
|
||||
return new();
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model) {
|
||||
if (string.IsNullOrEmpty(model.MessageID)) {
|
||||
return new();
|
||||
}
|
||||
using var context = new DinerDatabaseBy6Work();
|
||||
|
||||
return context.MessageInfos.
|
||||
Where(x => x.MessageID.Contains(model.MessageID)).Select(x => x.GetViewModel).ToList();
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFullList() {
|
||||
using var context = new DinerDatabaseBy6Work();
|
||||
return context.MessageInfos.Select(x => x.GetViewModel).ToList();
|
||||
}
|
||||
}
|
||||
}
|
57
Diner/DinerDataBaseImplement/Models/MessageInfo.cs
Normal file
57
Diner/DinerDataBaseImplement/Models/MessageInfo.cs
Normal file
@ -0,0 +1,57 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using DinerDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerDataBaseImplement.Models {
|
||||
public class MessageInfo : IMessageInfoModel {
|
||||
|
||||
public string MessageID { get; set; } = string.Empty;
|
||||
|
||||
[ForeignKey("ClientID")]
|
||||
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; set; }
|
||||
|
||||
public static MessageInfo? Create(DinerDatabaseBy6Work context, MessageInfoBindingModel model) {
|
||||
if (model == null) {
|
||||
return null;
|
||||
}
|
||||
return new MessageInfo() {
|
||||
MessageID = model.MessageID,
|
||||
SenderName = model.SenderName,
|
||||
DateDelivery = model.DateDelivery,
|
||||
Subject = model.Subject,
|
||||
Body = model.Body,
|
||||
Client = context.Clients.FirstOrDefault(x => x.Email == model.SenderName)
|
||||
};
|
||||
}
|
||||
|
||||
public MessageInfoViewModel GetViewModel => new() {
|
||||
MessageID = MessageID,
|
||||
ClientID = ClientID,
|
||||
SenderName = SenderName,
|
||||
DateDelivery = DateDelivery,
|
||||
Subject = Subject,
|
||||
Body = Body,
|
||||
};
|
||||
}
|
||||
}
|
16
Diner/DinerDataModels/Models/IMessageInfoModel.cs
Normal file
16
Diner/DinerDataModels/Models/IMessageInfoModel.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerDataModels.Models {
|
||||
public interface IMessageInfoModel {
|
||||
string MessageID { get; }
|
||||
int? ClientID { get; }
|
||||
string SenderName { get; }
|
||||
DateTime DateDelivery { get; }
|
||||
string Subject { get; }
|
||||
string Body { get; }
|
||||
}
|
||||
}
|
@ -16,6 +16,7 @@ namespace DinerListImplement
|
||||
public List<Order> Orders { get; set; }
|
||||
public List<Client> Clients { get; set; }
|
||||
public List<Implementer> Implementers { get; set; }
|
||||
public List<MessageInfo> MessageInfos { get; set; }
|
||||
|
||||
private DataListSingleton() {
|
||||
Foods = new List<Food>();
|
||||
@ -23,6 +24,7 @@ namespace DinerListImplement
|
||||
Orders = new List<Order>();
|
||||
Clients = new List<Client>();
|
||||
Implementers = new List<Implementer>();
|
||||
MessageInfos = new List<MessageInfo>();
|
||||
}
|
||||
public static DataListSingleton GetInstance() {
|
||||
if (_instance == null) _instance = new DataListSingleton();
|
||||
|
65
Diner/DinerListImplement/Implements/MessageInfoStorage.cs
Normal file
65
Diner/DinerListImplement/Implements/MessageInfoStorage.cs
Normal file
@ -0,0 +1,65 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.SearchModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using DinerListImplement.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerListImplement.Implements {
|
||||
public class MessageInfoStorage : IMessageInfoStorage {
|
||||
|
||||
private readonly DataListSingleton _source;
|
||||
|
||||
public MessageInfoStorage() {
|
||||
_source = DataListSingleton.GetInstance();
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? Insert(MessageInfoBindingModel model) {
|
||||
var newMessageInfo = MessageInfo.Create(model);
|
||||
if (newMessageInfo == null) {
|
||||
return null;
|
||||
}
|
||||
_source.MessageInfos.Add(newMessageInfo);
|
||||
return newMessageInfo.GetViewModel;
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) {
|
||||
if (string.IsNullOrEmpty(model.MessageID)) {
|
||||
return null;
|
||||
}
|
||||
foreach(var messageInfos in _source.MessageInfos) {
|
||||
if ((!string.IsNullOrEmpty(model.MessageID) &&
|
||||
messageInfos.MessageID == model.MessageID)) {
|
||||
return messageInfos.GetViewModel;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model) {
|
||||
var result = new List<MessageInfoViewModel>();
|
||||
if (string.IsNullOrEmpty(model.MessageID)) {
|
||||
return result;
|
||||
}
|
||||
foreach (var messageInfos in _source.MessageInfos) {
|
||||
if (messageInfos.MessageID.Contains(model.MessageID)) {
|
||||
result.Add(messageInfos.GetViewModel);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFullList() {
|
||||
var result = new List<MessageInfoViewModel>();
|
||||
foreach (var messageInfos in _source.MessageInfos) {
|
||||
result.Add(messageInfos.GetViewModel);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -28,6 +28,7 @@ namespace DinerListImplement.Models {
|
||||
Password = model.Password,
|
||||
WorkExperience = model.WorkExperience,
|
||||
Qualification = model.Qualification,
|
||||
ID = model.ID,
|
||||
};
|
||||
}
|
||||
public void Update(ImplementerBindingModel? model) {
|
||||
|
47
Diner/DinerListImplement/Models/MessageInfo.cs
Normal file
47
Diner/DinerListImplement/Models/MessageInfo.cs
Normal file
@ -0,0 +1,47 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using DinerDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerListImplement.Models {
|
||||
public class MessageInfo : IMessageInfoModel {
|
||||
public string MessageID { get; private set; } = string.Empty;
|
||||
|
||||
public int? ClientID { get; set; }
|
||||
|
||||
public string SenderName { get; private set; } = string.Empty;
|
||||
|
||||
public DateTime DateDelivery { get; set; }
|
||||
|
||||
public string Subject { get; private set; } = string.Empty;
|
||||
|
||||
public string Body { get; private 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
|
||||
};
|
||||
}
|
||||
}
|
@ -22,11 +22,14 @@ namespace DinerFileImplement
|
||||
|
||||
private readonly string ImplementerFileName = "Implementer.xml";
|
||||
|
||||
private readonly string MessageInfoFileName = "MessageInfo.xml";
|
||||
|
||||
public List<Food> Foods { get; set; }
|
||||
public List<Order> Orders { get; private set; }
|
||||
public List<Snack> Snacks { get; private set; }
|
||||
public List<Client> Clients { get; private set; }
|
||||
public List<Implementer> Implementers { get; private set; }
|
||||
public List<MessageInfo> MessageInfos { get; private set; }
|
||||
|
||||
private DataFileSingleton() {
|
||||
Foods = LoadData(FoodFileName, "Food", x => Food.Create(x)!)!;
|
||||
@ -34,6 +37,7 @@ namespace DinerFileImplement
|
||||
Orders = LoadData(OrderFileName, "Order", x => Order.Create(x)!)!;
|
||||
Clients = LoadData(ClientFileName, "Client", x => Client.Create(x)!)!;
|
||||
Implementers = LoadData(ImplementerFileName, "Implementer", x => Implementer.Create(x)!)!;
|
||||
MessageInfos = LoadData(MessageInfoFileName, "MessageInfo", x => MessageInfo.Create(x)!)!;
|
||||
}
|
||||
public static DataFileSingleton GetInstance() {
|
||||
if (instance == null) instance = new DataFileSingleton();
|
||||
@ -49,6 +53,8 @@ namespace DinerFileImplement
|
||||
x => x.GetXElement);
|
||||
public void SaveImplementer() => SaveData(Implementers, ImplementerFileName, "Implementers",
|
||||
x => x.GetXElement);
|
||||
public void SaveMessageInfo() => SaveData(MessageInfos, MessageInfoFileName, "MessageInfo",
|
||||
x => x.GetXElement);
|
||||
|
||||
private static void SaveData<T>(List<T> data, string filename, string xmlNodeName,
|
||||
Func<T, XElement> selectFunction)
|
||||
|
50
Diner/DinerShopImplement/Implements/MessageInfoStorage.cs
Normal file
50
Diner/DinerShopImplement/Implements/MessageInfoStorage.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.SearchModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using DinerFileImplement.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DinerFileImplement.Implements {
|
||||
public class MessageInfoStorage : IMessageInfoStorage {
|
||||
|
||||
private readonly DataFileSingleton _source;
|
||||
|
||||
private MessageInfoStorage() {
|
||||
_source = DataFileSingleton.GetInstance();
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? Insert(MessageInfoBindingModel model) {
|
||||
var newMessageInfo = MessageInfo.Create(model);
|
||||
if (newMessageInfo == null) {
|
||||
return null;
|
||||
}
|
||||
_source.MessageInfos.Add(newMessageInfo);
|
||||
_source.SaveMessageInfo();
|
||||
return newMessageInfo.GetViewModel;
|
||||
}
|
||||
|
||||
public MessageInfoViewModel? GetElement(MessageInfoSearchModel model) {
|
||||
if (string.IsNullOrEmpty(model.MessageID)) {
|
||||
return null;
|
||||
}
|
||||
return _source.MessageInfos.FirstOrDefault(x => (!string.IsNullOrEmpty(model.MessageID) &&
|
||||
x.MessageID == model.MessageID))?.GetViewModel;
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFilteredList(MessageInfoSearchModel model) {
|
||||
if (string.IsNullOrEmpty(model.MessageID)) {
|
||||
return new();
|
||||
}
|
||||
return _source.MessageInfos.Where(x => x.MessageID.Contains(model.MessageID)).Select(x => x.GetViewModel).ToList();
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel> GetFullList() {
|
||||
return _source.MessageInfos.Select(x => x.GetViewModel).ToList();
|
||||
}
|
||||
}
|
||||
}
|
69
Diner/DinerShopImplement/Models/MessageInfo.cs
Normal file
69
Diner/DinerShopImplement/Models/MessageInfo.cs
Normal file
@ -0,0 +1,69 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using DinerDataModels.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace DinerFileImplement.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.Element("MessageID")!.Value,
|
||||
ClientID = Convert.ToInt32(element.Element("ClientID")!.Value),
|
||||
SenderName = element.Element("SenderName")!.Value,
|
||||
DateDelivery = Convert.ToDateTime(element.Element("DateImplement")!.Value),
|
||||
Subject = element.Element("Subject")!.Value,
|
||||
Body = element.Element("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),
|
||||
new XElement("ClientID", ClientID.ToString()),
|
||||
new XElement("SenderName", SenderName),
|
||||
new XElement("DateDelivery", DateDelivery.ToString()),
|
||||
new XElement("Subject", Subject),
|
||||
new XElement("Body", Body));
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
using DinerContracts.BusinessLogicsContacts;
|
||||
using DinerContracts.BusinessLogicsContracts;
|
||||
using DinerContracts.SearchModels;
|
||||
using DinerContracts.StoragesContracts;
|
||||
using DinerDataBaseImplement.Implements;
|
||||
using DineryBusinessLogic.BusinessLogic;
|
||||
@ -42,6 +43,7 @@ namespace DinerView
|
||||
services.AddTransient<IImplementerStorage, ImplementerStorage>();
|
||||
services.AddTransient<ISnackStorage, SnackStorage>();
|
||||
services.AddTransient<IClientStorage, ClientStorage>();
|
||||
services.AddTransient<IMessageInfoStorage, MessageInfoStorage>();
|
||||
|
||||
services.AddTransient<IClientLogic, ClientLogic>();
|
||||
services.AddTransient<IFoodLogic, FoodLogic>();
|
||||
@ -50,6 +52,7 @@ namespace DinerView
|
||||
services.AddTransient<ISnackLogic, SnackLogic>();
|
||||
services.AddTransient<IReportLogic, ReportLogic>();
|
||||
services.AddTransient<IWorkProcess, WorkModelling>();
|
||||
services.AddTransient<IMessageInfoLogic, MessageInfoLogic>();
|
||||
|
||||
services.AddTransient<AbstractSaveToExcel, SaveToExcel>();
|
||||
services.AddTransient<AbstractSaveToWord, SaveToWord>();
|
||||
|
@ -3,6 +3,7 @@ using DinerContracts.BusinessLogicsContracts;
|
||||
using DinerContracts.SearchModels;
|
||||
using DinerContracts.StoragesContracts;
|
||||
using DinerContracts.ViewModels;
|
||||
using DocumentFormat.OpenXml.Office2016.Drawing.Command;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -87,16 +88,16 @@ namespace DineryBusinessLogic.BusinessLogic {
|
||||
throw new ArgumentNullException("Нет ФИО исполнителя", nameof(model.ImplementerFIO));
|
||||
}
|
||||
if (string.IsNullOrEmpty(model.Password)) {
|
||||
throw new ArgumentNullException("Нет пароля");
|
||||
throw new ArgumentNullException("Нет пароля", nameof(model.Password));
|
||||
}
|
||||
if (string.IsNullOrEmpty((model.WorkExperience).ToString())) {
|
||||
throw new ArgumentNullException("Не указан стаж");
|
||||
throw new ArgumentNullException("Не указан стаж", nameof(model.WorkExperience));
|
||||
}
|
||||
if (string.IsNullOrEmpty((model.Qualification).ToString())) {
|
||||
throw new ArgumentNullException("Нет квалификации");
|
||||
throw new ArgumentNullException("Нет квалификации", nameof(model.Qualification));
|
||||
}
|
||||
if (string.IsNullOrEmpty((model.ID).ToString())) {
|
||||
throw new ArgumentNullException("Нет ID пользователя", nameof(model.ID));
|
||||
throw new ArgumentNullException("Нет ID исполнителя", nameof(model.ID));
|
||||
}
|
||||
_logger.LogInformation($"Implementer. ID:{model.ID}.ImplementerFIO:{model.ImplementerFIO}.WorkExperience:{model.WorkExperience}." +
|
||||
$"Qualification:{model.Qualification}");
|
||||
|
72
Diner/DineryBusinessLogic/BusinessLogic/MessageInfoLogic.cs
Normal file
72
Diner/DineryBusinessLogic/BusinessLogic/MessageInfoLogic.cs
Normal file
@ -0,0 +1,72 @@
|
||||
using DinerContracts.BindingModels;
|
||||
using DinerContracts.BusinessLogicsContracts;
|
||||
using DinerContracts.SearchModels;
|
||||
using DinerContracts.ViewModels;
|
||||
using DocumentFormat.OpenXml.Packaging;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DineryBusinessLogic.BusinessLogic {
|
||||
public class MessageInfoLogic : IMessageInfoLogic {
|
||||
|
||||
private readonly ILogger _logger;
|
||||
private readonly IMessageInfoStorage _storage;
|
||||
|
||||
public MessageInfoLogic(ILogger<MessageInfoLogic> logger, IMessageInfoStorage storage) {
|
||||
_logger = logger;
|
||||
_storage = storage;
|
||||
}
|
||||
|
||||
public bool Create(MessageInfoBindingModel model) {
|
||||
CheckModel(model);
|
||||
if (_storage.Insert(model) == null) {
|
||||
_logger.LogWarning("Insert operation failed");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<MessageInfoViewModel>? ReadList(MessageInfoSearchModel? model) {
|
||||
_logger.LogInformation($"ReadList. MessageID:{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:{list.Count}");
|
||||
return list;
|
||||
}
|
||||
|
||||
private void CheckModel(MessageInfoBindingModel model, bool withParams = true) {
|
||||
if (model == null) {
|
||||
throw new ArgumentNullException(nameof(model));
|
||||
}
|
||||
if (!withParams) {
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(model.MessageID)) {
|
||||
throw new ArgumentNullException("Нет ID письма", nameof(model.MessageID));
|
||||
}
|
||||
if (string.IsNullOrEmpty((model.ClientID).ToString())) {
|
||||
throw new ArgumentNullException("Нет ID клиента", nameof(model.ClientID));
|
||||
}
|
||||
if (string.IsNullOrEmpty((model.DateDelivery).ToString())) {
|
||||
throw new ArgumentNullException("Нет даты письма", nameof(model.DateDelivery));
|
||||
}
|
||||
if (string.IsNullOrEmpty(model.Subject)) {
|
||||
throw new ArgumentNullException("Нет заголовка письма", nameof(model.Subject));
|
||||
}
|
||||
if (string.IsNullOrEmpty(model.Body)) {
|
||||
throw new ArgumentNullException("Нет тела письма", nameof(model.Body));
|
||||
}
|
||||
_logger.LogInformation($"MessageInfo. MessageID:{model.MessageID}.ClientID:{model.ClientID}.DataDelivery:{model.DateDelivery}." +
|
||||
$"Subject:{model.Subject}.Body:{model.Body}");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user