Петрушин Егор ПИбд-22 Лабораторная №4 Юридическая фирма #4

Closed
Egor_Petrushin wants to merge 8 commits from Lab4_ into Lab3
16 changed files with 224 additions and 193 deletions
Showing only changes of commit dcde585e86 - Show all commits

View File

@ -1,4 +1,5 @@
using AbstractLawFirmDataBaseImplement.Models;
using AbstractLawFirmDatabaseImplement.Models;
using AbstractLawFirmDataBaseImplement.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
@ -8,7 +9,7 @@ using System.Threading.Tasks;
namespace AbstractLawFirmDataBaseImplement
{
public class AbstractLawFirmDataBase : DbContext
public class AbstractLawFirmDatabase : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{

View File

@ -16,7 +16,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
public List<ComponentViewModel> GetFullList()
{
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
return context.Components
.Select(x => x.GetViewModel)
.ToList();
@ -27,7 +27,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
return new();
}
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
return context.Components
.Where(x => x.ComponentName.Contains(model.ComponentName))
.Select(x => x.GetViewModel)
@ -39,7 +39,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
return null;
}
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
return context.Components
.FirstOrDefault(x =>
(!string.IsNullOrEmpty(model.ComponentName) && x.ComponentName == model.ComponentName) || (model.Id.HasValue && x.Id == model.Id)) ?.GetViewModel;
@ -51,14 +51,14 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
return null;
}
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
context.Components.Add(newComponent);
context.SaveChanges();
return newComponent.GetViewModel;
}
public ComponentViewModel? Update(ComponentBindingModel model)
{
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
var component = context.Components.FirstOrDefault(x => x.Id == model.Id);
if (component == null)
{
@ -70,7 +70,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
}
public ComponentViewModel? Delete(ComponentBindingModel model)
{
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
var element = context.Components.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{

View File

@ -1,112 +1,108 @@
using AbstractLawFirmContracts.BindingModels;
using AbstractLawFirmContracts.BindingModels.BindingModels;
using AbstractLawFirmContracts.SearchModels;
using AbstractLawFirmContracts.StoragesContracts;
using AbstractLawFirmContracts.ViewModels;
using AbstractLawFirmDataBaseImplement;
using AbstractLawFirmDataBaseImplement.Models;
using Microsoft.EntityFrameworkCore;
using AbstractLawFirmDataBaseImplement.Models;
using AbstractLawFirmDataBaseImplement;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AbstractLawFirmDatabaseImplement.Models;
namespace AbstractLawFirmDatabaseImplement.Implements
{
public class DocumentStorage : IDocumentStorage
{
public List<DocumentViewModel> GetFullList()
{
using var context = new AbstractLawFirmDataBase();
return context.Documents
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public List<DocumentViewModel> GetFilteredList(DocumentSearchModel model)
{
if (string.IsNullOrEmpty(model.DocumentName))
{
return new();
}
using var context = new AbstractLawFirmDataBase();
return context.Documents
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.Where(x => x.DocumentName.Contains(model.DocumentName))
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public DocumentViewModel? GetElement(DocumentSearchModel model)
{
if (string.IsNullOrEmpty(model.DocumentName) &&
!model.Id.HasValue)
{
return null;
}
using var context = new AbstractLawFirmDataBase();
return context.Documents
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.DocumentName) &&
x.DocumentName == model.DocumentName) ||
(model.Id.HasValue && x.Id ==
model.Id))
?.GetViewModel;
}
public DocumentViewModel? Insert(DocumentBindingModel model)
{
using var context = new AbstractLawFirmDataBase();
var newDocument = Document.Create(context, model);
if (newDocument == null)
{
return null;
}
context.Documents.Add(newDocument);
context.SaveChanges();
return newDocument.GetViewModel;
}
public DocumentViewModel? Update(DocumentBindingModel model)
{
using var context = new AbstractLawFirmDataBase();
using var transaction = context.Database.BeginTransaction();
try
{
var product = context.Documents.FirstOrDefault(rec =>
rec.Id == model.Id);
if (product == null)
{
return null;
}
product.Update(model);
context.SaveChanges();
product.UpdateComponents(context, model);
transaction.Commit();
return product.GetViewModel;
}
catch
{
transaction.Rollback();
throw;
}
}
public DocumentViewModel? Delete(DocumentBindingModel model)
{
using var context = new AbstractLawFirmDataBase();
var element = context.Documents
.Include(x => x.Components)
.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Documents.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
{
public List<DocumentViewModel> GetFullList()
{
using var context = new AbstractLawFirmDatabase();
return context.Documents
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public List<DocumentViewModel> GetFilteredList(DocumentSearchModel model)
{
if (string.IsNullOrEmpty(model.DocumentName))
{
return new();
}
using var context = new AbstractLawFirmDatabase();
return context.Documents
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.Where(x => x.DocumentName.Contains(model.DocumentName))
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public DocumentViewModel? GetElement(DocumentSearchModel model)
{
if (string.IsNullOrEmpty(model.DocumentName) &&
!model.Id.HasValue)
{
return null;
}
using var context = new AbstractLawFirmDatabase();
return context.Documents.Include(x => x.Components).ThenInclude(x => x.Component)
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.DocumentName) &&
x.DocumentName == model.DocumentName) ||
(model.Id.HasValue && x.Id ==
model.Id))
?.GetViewModel;
}
public DocumentViewModel? Insert(DocumentBindingModel model)
{
using var context = new AbstractLawFirmDatabase();
var newDocument = Document.Create(context, model);
if (newDocument == null)
{
return null;
}
context.Documents.Add(newDocument);
context.SaveChanges();
return newDocument.GetViewModel;
}
public DocumentViewModel? Update(DocumentBindingModel model)
{
using var context = new AbstractLawFirmDatabase();
using var transaction = context.Database.BeginTransaction();
try
{
var document = context.Documents.FirstOrDefault(rec =>
rec.Id == model.Id);
if (document == null)
{
return null;
}
document.Update(model);
context.SaveChanges();
document.UpdateComponents(context, model);
transaction.Commit();
return document.GetViewModel;
}
catch
{
transaction.Rollback();
throw;
}
}
public DocumentViewModel? Delete(DocumentBindingModel model)
{
using var context = new AbstractLawFirmDatabase();
var element = context.Documents.Include(x => x.Components).FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Documents.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}
}

View File

@ -10,6 +10,7 @@ using System.Text;
using System.Threading.Tasks;
using AbstractLawFirmDataBaseImplement;
using Microsoft.EntityFrameworkCore;
using AbstractLawFirmDatabaseImplement.Models;
namespace AbstractLawFirmDatabaseImplement.Implements
{
@ -17,7 +18,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
public OrderViewModel? Delete(OrderBindingModel model)
{
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
var element = context.Orders.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
@ -34,7 +35,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
return null;
}
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
return context.Orders
.FirstOrDefault(x =>
(model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
@ -46,7 +47,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
return new();
}
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
return context.Orders
.Where(x => x.Id == model.Id || model.DateFrom <= x.DateCreate && x.DateCreate <= model.DateTo)
.Select(x => x.GetViewModel)
@ -55,7 +56,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
public List<OrderViewModel> GetFullList()
{
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
return context.Orders
.Select(x => x.GetViewModel)
.ToList();
@ -68,7 +69,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
{
return null;
}
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
context.Orders.Add(newOrder);
context.SaveChanges();
return newOrder.GetViewModel;
@ -76,7 +77,7 @@ namespace AbstractLawFirmDatabaseImplement.Implements
public OrderViewModel? Update(OrderBindingModel model)
{
using var context = new AbstractLawFirmDataBase();
using var context = new AbstractLawFirmDatabase();
var component = context.Orders.FirstOrDefault(x => x.Id == model.Id);
if (component == null)
{

View File

@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace AbstractLawFirmDatabaseImplement.Migrations
{
[DbContext(typeof(AbstractLawFirmDataBase))]
[DbContext(typeof(AbstractLawFirmDatabase))]
[Migration("20240325152423_InitialCreate")]
partial class InitialCreate
{

View File

@ -10,7 +10,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace AbstractLawFirmDatabaseImplement.Migrations
{
[DbContext(typeof(AbstractLawFirmDataBase))]
[DbContext(typeof(AbstractLawFirmDatabase))]
partial class AbstractLawFirmDataBaseModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)

View File

@ -9,6 +9,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AbstractLawFirmDataBaseImplement.Models;
using AbstractLawFirmDatabaseImplement.Models;
namespace AbstractLawFirmDataBaseImplement.Models
{

View File

@ -9,8 +9,9 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AbstractLawFirmDataBaseImplement.Models;
using AbstractLawFirmDataBaseImplement;
namespace AbstractLawFirmDataBaseImplement.Models
namespace AbstractLawFirmDatabaseImplement.Models
{
public class Document : IDocumentModel
{
@ -19,34 +20,36 @@ namespace AbstractLawFirmDataBaseImplement.Models
public string DocumentName { get; set; } = string.Empty;
[Required]
public double Price { get; set; }
private Dictionary<int, (IComponentModel, int)>? _productComponents =
private Dictionary<int, (IComponentModel, int)>? _documentComponents =
null;
[NotMapped]
public Dictionary<int, (IComponentModel, int)> DocumentComponents
{
get
{
if (_productComponents == null)
if (_documentComponents == null)
{
_productComponents = Components
_documentComponents = Components
.ToDictionary(recPC => recPC.ComponentId, recPC =>
(recPC.Component as IComponentModel, recPC.Count));
}
return _productComponents;
return _documentComponents;
}
}
[ForeignKey("DocumentId")]
public virtual List<DocumentComponent> Components { get; set; } = new();
[ForeignKey("DocumentId")]
public virtual List<Order> Orders { get; set; } = new();
public static Document Create(AbstractLawFirmDataBase context, DocumentBindingModel model)
public static Document Create(AbstractLawFirmDatabase context,
DocumentBindingModel model)
{
return new Document()
{
Id = model.Id,
DocumentName = model.DocumentName,
Price = model.Price,
Components = model.DocumentComponents.Select(x => new DocumentComponent
Components = model.DocumentComponents.Select(x => new
DocumentComponent
{
Component = context.Components.First(y => y.Id == x.Key),
Count = x.Value.Item2
@ -65,12 +68,14 @@ namespace AbstractLawFirmDataBaseImplement.Models
Price = Price,
DocumentComponents = DocumentComponents
};
public void UpdateComponents(AbstractLawFirmDataBase context, DocumentBindingModel model)
public void UpdateComponents(AbstractLawFirmDatabase context,
DocumentBindingModel model)
{
var documentComponents = context.DocumentComponents.Where(rec => rec.DocumentId == model.Id).ToList();
if (documentComponents != null && documentComponents.Count > 0)
{ // удалили те, которых нет в модели
context.DocumentComponents.RemoveRange(documentComponents.Where(rec => !model.DocumentComponents.ContainsKey(rec.ComponentId)));
context.DocumentComponents.RemoveRange(documentComponents.Where(rec
=> !model.DocumentComponents.ContainsKey(rec.ComponentId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateComponent in documentComponents)
@ -80,18 +85,18 @@ namespace AbstractLawFirmDataBaseImplement.Models
}
context.SaveChanges();
}
var product = context.Documents.First(x => x.Id == Id);
var document = context.Documents.First(x => x.Id == Id);
foreach (var pc in model.DocumentComponents)
{
context.DocumentComponents.Add(new DocumentComponent
{
Document = product,
Document = document,
Component = context.Components.First(x => x.Id == pc.Key),
Count = pc.Value.Item2
});
context.SaveChanges();
}
_productComponents = null;
_documentComponents = null;
}
}
}
}

View File

@ -1,13 +1,13 @@
using AbstractLawFirmDataBaseImplement.Models;
using AbstractLawFirmDatabaseImplement.Models;
using AbstractLawFirmDataBaseImplement.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
namespace AbstractLawFirmDataBaseImplement.Models
namespace AbstractLawFirmDatabaseImplement.Models
{
public class DocumentComponent
{
@ -21,4 +21,4 @@ namespace AbstractLawFirmDataBaseImplement.Models
public virtual Component Component { get; set; } = new();
public virtual Document Document { get; set; } = new();
}
}
}

View File

@ -4,62 +4,68 @@ using AbstractLawFirmDataModels.Enums;
using AbstractLawFirmDataModels.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AbstractLawFirmDataBaseImplement.Models
namespace AbstractLawFirmDatabaseImplement.Models
{
public class Order : IOrderModel
{
public int Id { get; private set; }
[Required]
public int DocumentId { get; private set; }
[Required]
public int Count { get; private set; }
[Required]
public double Sum { get; private set; }
public OrderStatus Status { get; private set; }
public DateTime DateCreate { get; private set; }
[Required]
public OrderStatus Status { get; private set; } = OrderStatus.Неизвестен;
[Required]
public DateTime DateCreate { get; private set; } = DateTime.Now;
public DateTime? DateImplement { get; private set; }
public virtual Document Document { get; set; }
public static Order? Create(OrderBindingModel? model)
{
if (model == null)
{
return null;
}
return new Order()
return new Order
{
Id = model.Id,
DocumentId = model.DocumentId,
Count = model.Count,
Sum = model.Sum,
Status = model.Status,
DateCreate = model.DateCreate,
DateImplement = model.DateImplement,
Id = model.Id,
};
}
public void Update(OrderBindingModel? model)
{
if (model == null)
{
return;
}
Id = model.Id;
DocumentId = model.DocumentId;
Count = model.Count;
Sum = model.Sum;
Status = model.Status;
DateCreate = model.DateCreate;
DateImplement = model.DateImplement;
}
public OrderViewModel GetViewModel => new()
public OrderViewModel GetViewModel => new OrderViewModel
{
Id = Id,
DocumentId = DocumentId,
Count = Count,
Sum = Sum,
Status = Status,
DateCreate = DateCreate,
DateImplement = DateImplement,
Id = Id,
Status = Status,
DocumentName = Document?.DocumentName ?? string.Empty // Безопасное использование DocumentName
};
}
}
}

View File

@ -3,15 +3,7 @@ using AbstractLawFirmContracts.BindingModels;
using AbstractLawFirmContracts.BusinessLogicsContracts;
using AbstractLawFirmDataModels.Enums;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AbstractLawFirmBusinessLogic.BusinessLogic;
namespace LawFirmView
{
@ -211,7 +203,7 @@ namespace LawFirmView
form.ShowDialog();
}
}
/* private void списокПакетовДокументовToolStripMenuItem_Click(object sender, EventArgs e)
private void списокПакетовДокументовToolStripMenuItem_Click(object sender, EventArgs e)
{
using var dialog = new SaveFileDialog { Filter = "docx|*.docx" };
if (dialog.ShowDialog() == DialogResult.OK)
@ -224,7 +216,6 @@ namespace LawFirmView
MessageBoxIcon.Information);
}
}
*/
private void компонентыПоПакетамДокументовToolStripMenuItem_Click(object sender, EventArgs e)
{

View File

@ -33,13 +33,15 @@
компонентыToolStripMenuItem = new ToolStripMenuItem();
пакетыДокументовToolStripMenuItem = new ToolStripMenuItem();
формированиеОтчётовToolStripMenuItem = new ToolStripMenuItem();
компонентыПоПакетамДокументовToolStripMenuItem = new ToolStripMenuItem();
dataGridView = new DataGridView();
buttonCreateOrder = new Button();
buttonTakeOrderInWork = new Button();
buttonOrderReady = new Button();
buttonIssuedOrder = new Button();
buttonRef = new Button();
компонентыПоПакетамДокументовToolStripMenuItem = new ToolStripMenuItem();
списокПакетовДокументовToolStripMenuItem = new ToolStripMenuItem();
списокЗаказовToolStripMenuItem = new ToolStripMenuItem();
menuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
SuspendLayout();
@ -78,11 +80,18 @@
//
// формированиеОтчётовToolStripMenuItem
//
формированиеОтчётовToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { компонентыПоПакетамДокументовToolStripMenuItem });
формированиеОтчётовToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { компонентыПоПакетамДокументовToolStripMenuItem, списокПакетовДокументовToolStripMenuItem, списокЗаказовToolStripMenuItem });
формированиеОтчётовToolStripMenuItem.Name = ормированиеОтчётовToolStripMenuItem";
формированиеОтчётовToolStripMenuItem.Size = new Size(259, 26);
формированиеОтчётовToolStripMenuItem.Text = "Формирование отчётов";
//
// компонентыПоПакетамДокументовToolStripMenuItem
//
компонентыПоПакетамДокументовToolStripMenuItem.Name = омпонентыПоПакетамДокументовToolStripMenuItem";
компонентыПоПакетамДокументовToolStripMenuItem.Size = new Size(351, 26);
компонентыПоПакетамДокументовToolStripMenuItem.Text = "Компоненты по пакетам документов";
компонентыПоПакетамДокументовToolStripMenuItem.Click += компонентыПоПакетамДокументовToolStripMenuItem_Click;
//
// dataGridView
//
dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
@ -149,12 +158,19 @@
buttonRef.UseVisualStyleBackColor = true;
buttonRef.Click += buttonRef_Click;
//
// компонентыПоПакетамДокументовToolStripMenuItem
// списокПакетовДокументовToolStripMenuItem
//
компонентыПоПакетамДокументовToolStripMenuItem.Name = омпонентыПоПакетамДокументовToolStripMenuItem";
компонентыПоПакетамДокументовToolStripMenuItem.Size = new Size(357, 26);
компонентыПоПакетамДокументовToolStripMenuItem.Text = "Компоненты По Пакетам Документов";
компонентыПоПакетамДокументовToolStripMenuItem.Click += компонентыПоПакетамДокументовToolStripMenuItem_Click;
списокПакетовДокументовToolStripMenuItem.Name = "списокПакетовДокументовToolStripMenuItem";
списокПакетовДокументовToolStripMenuItem.Size = new Size(351, 26);
списокПакетовДокументовToolStripMenuItem.Text = "Список пакетов документов";
списокПакетовДокументовToolStripMenuItem.Click += списокПакетовДокументовToolStripMenuItem_Click;
//
// списокЗаказовToolStripMenuItem
//
списокЗаказовToolStripMenuItem.Name = "списокЗаказовToolStripMenuItem";
списокЗаказовToolStripMenuItem.Size = new Size(351, 26);
списокЗаказовToolStripMenuItem.Text = "Список заказов";
списокЗаказовToolStripMenuItem.Click += списокЗаказовToolStripMenuItem_Click;
//
// FormMain
//
@ -194,5 +210,7 @@
private Button buttonRef;
private ToolStripMenuItem формированиеОтчётовToolStripMenuItem;
private ToolStripMenuItem компонентыПоПакетамДокументовToolStripMenuItem;
private ToolStripMenuItem списокПакетовДокументовToolStripMenuItem;
private ToolStripMenuItem списокЗаказовToolStripMenuItem;
}
}

View File

@ -34,7 +34,6 @@ namespace LawFirmView
dataGridView.Rows.Clear();
foreach (var elem in dict)
{
// проверить ComponentName Document (поменять местами)
dataGridView.Rows.Add(new object[] { elem.DocumentName, "", "" });
foreach (var listElem in elem.Components)
{
@ -86,4 +85,4 @@ namespace LawFirmView
}
}
}
}
}

View File

@ -1,5 +1,4 @@
using AbstractLawFirmContracts.BindingModels;
using AbstractLawFirmContracts.BusinessLogicsContracts;
using AbstractLawFirmContracts.BusinessLogicsContracts;
using Microsoft.Extensions.Logging;
using Microsoft.Reporting.WinForms;
using System;
@ -11,6 +10,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AbstractLawFirmContracts.BindingModels;
namespace LawFirmView
{
@ -19,8 +19,7 @@ namespace LawFirmView
private readonly ReportViewer reportViewer;
private readonly ILogger _logger;
private readonly IReportLogic _logic;
public FormReportOrders(ILogger<FormReportOrders> logger, IReportLogic
logic)
public FormReportOrders(ILogger<FormReportOrders> logger, IReportLogic logic)
{
InitializeComponent();
_logger = logger;
@ -29,13 +28,14 @@ namespace LawFirmView
{
Dock = DockStyle.Fill
};
reportViewer.LocalReport.LoadReportDefinition(new
FileStream("ReportOrders.rdlc", FileMode.Open));
reportViewer.LocalReport.LoadReportDefinition(new FileStream("ReportOrders.rdlc", FileMode.Open));
Controls.Clear();
Controls.Add(reportViewer);
Controls.Add(panel);
}
private void ButtonMake_Click(object sender, EventArgs e)
private void buttonMake_Click(object sender, EventArgs e)
{
if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date)
{
@ -53,9 +53,12 @@ namespace LawFirmView
var source = new ReportDataSource("DataSetOrders", dataSource);
reportViewer.LocalReport.DataSources.Clear();
reportViewer.LocalReport.DataSources.Add(source);
var parameters = new[] { new ReportParameter("ReportParameterPeriod", $"c {dateTimePickerFrom.Value.ToShortDateString()} по{dateTimePickerTo.Value.ToShortDateString()}") }; reportViewer.LocalReport.SetParameters(parameters);
var parameters = new[] { new ReportParameter("ReportParameterPeriod",
$"c {dateTimePickerFrom.Value.ToShortDateString()} по {dateTimePickerTo.Value.ToShortDateString()}") };
reportViewer.LocalReport.SetParameters(parameters);
reportViewer.RefreshReport();
_logger.LogInformation("Загрузка списка заказов на период {From}- { To} ", dateTimePickerFrom.Value.ToShortDateString(), dateTimePickerTo.Value.ToShortDateString());
_logger.LogInformation("Загрузка списка заказов на период {From}- { To} ", dateTimePickerFrom.Value.ToShortDateString(),
dateTimePickerTo.Value.ToShortDateString());
}
catch (Exception ex)
{
@ -63,8 +66,10 @@ namespace LawFirmView
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
private void ButtonToPdf_Click(object sender, EventArgs e)
private void buttonToPdf_Click(object sender, EventArgs e)
{
if (dateTimePickerFrom.Value.Date >= dateTimePickerTo.Value.Date)
{
@ -86,7 +91,8 @@ namespace LawFirmView
DateFrom = dateTimePickerFrom.Value,
DateTo = dateTimePickerTo.Value
});
_logger.LogInformation("Сохранение списка заказов на период { From} -{ To} ", dateTimePickerFrom.Value.ToShortDateString(),
_logger.LogInformation("Сохранение списка заказов на период { From} -{ To} ",
dateTimePickerFrom.Value.ToShortDateString(),
dateTimePickerTo.Value.ToShortDateString());
MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK,
MessageBoxIcon.Information);
@ -94,10 +100,12 @@ namespace LawFirmView
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка сохранения списка заказов на период");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
}
}

View File

@ -25,4 +25,9 @@
<ProjectReference Include="..\AbstractLawFirmListImplement\AbstractLawFirmListImplement.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="ReportOrders.rdlc">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<AutoRefresh>0</AutoRefresh>
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="AbstractLawFirmContractsViewModels">
<ConnectionProperties>
@ -581,19 +581,19 @@
<Prompt>ReportParameter1</Prompt>
</ReportParameter>
</ReportParameters>
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
<CellDefinitions>
<CellDefinition>
<ColumnIndex>0</ColumnIndex>
<RowIndex>0</RowIndex>
<ParameterName>ReportParameterPeriod</ParameterName>
</CellDefinition>
</CellDefinitions>
</GridLayoutDefinition>
</ReportParametersLayout>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
<rd:ReportID>0450af05-3af7-4c1a-9e54-1c474b4807b8</rd:ReportID>
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
<CellDefinitions>
<CellDefinition>
<ColumnIndex>0</ColumnIndex>
<RowIndex>0</RowIndex>
<ParameterName>ReportParameterPeriod</ParameterName>
</CellDefinition>
</CellDefinitions>
</GridLayoutDefinition>
</ReportParametersLayout>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
<rd:ReportID>2de0031a-4d17-449d-922d-d9fc54572312</rd:ReportID>
</Report>