лала лала лала всё будет хорошо

This commit is contained in:
sofiaivv 2024-05-27 10:01:53 +04:00
parent 8484941fa6
commit cf104dd677
52 changed files with 2440 additions and 394 deletions

View File

@ -72,6 +72,7 @@ namespace LawCompanyBusinessLogic.BusinessLogics
return list;
}
public bool Update(ConsultationBindingModel model)
{
CheckModel(model);
@ -124,8 +125,7 @@ namespace LawCompanyBusinessLogic.BusinessLogics
{
throw new ArgumentNullException("Не поставлено время", nameof(model.ConsultationDate));
}
_logger.LogInformation("Consultation. ConsultationDate:{ConsultationDate}. Id: {Id} ", model.ConsultationDate, model.Id);
_logger.LogInformation("Consultation.ConsultationDate: { ConsultationDate}. Id: {Id} ", model.ConsultationDate, model.Id);
var element = _consultationStorage.GetElement(new ConsultationSearchModel
{
ConsultationDate = model.ConsultationDate

View File

@ -11,51 +11,160 @@ namespace LawCompanyBusinessLogic.BusinessLogics
{
public class ReportLogicGuarantor : IReportGuarantorLogic
{
/*private readonly IVisitStorage _visitStorage;
private readonly IClientStorage _clientStorage;
private readonly ICaseStorage _caseStorage;
private readonly IConsultationStorage _consultationStorage;
private readonly IHearingStorage _hearingStorage;
private readonly AbstractSaveToExcelGuarantor _saveToExcel;
private readonly AbstractSaveToWordGuarantor _saveToWord;
private readonly AbstractSaveToPdfGuarantor _saveToPdf;
private readonly IVisitStorage _visitStorage;
private readonly IClientStorage _clientStorage;
private readonly ICaseStorage _caseStorage;
private readonly IConsultationStorage _consultationStorage;
private readonly IHearingStorage _hearingStorage;
private readonly AbstractSaveToExcelGuarantor _saveToExcel;
private readonly AbstractSaveToWordGuarantor _saveToWord;
private readonly AbstractSaveToPdfGuarantor _saveToPdf;
public ReportLogicGuarantor(IVisitStorage visitStorage, IClientStorage clientStorage, ICaseStorage caseStorage,
IConsultationStorage consultationStorage, IHearingStorage hearingStorage,
AbstractSaveToExcelGuarantor saveToExcel, AbstractSaveToWordGuarantor saveToWord, AbstractSaveToPdfGuarantor saveToPdf)
public ReportLogicGuarantor(IVisitStorage visitStorage, IClientStorage clientStorage, ICaseStorage caseStorage,
IConsultationStorage consultationStorage, IHearingStorage hearingStorage,
AbstractSaveToExcelGuarantor saveToExcel, AbstractSaveToWordGuarantor saveToWord, AbstractSaveToPdfGuarantor saveToPdf)
{
_visitStorage = visitStorage;
_clientStorage = clientStorage;
_caseStorage = caseStorage;
_consultationStorage = consultationStorage;
_hearingStorage = hearingStorage;
_saveToExcel = saveToExcel;
_saveToWord = saveToWord;
_saveToPdf = saveToPdf;
}
public List<ReportLawyerHearingViewModel> GetLawyerHearing(List<int> Ids)
{
_visitStorage = visitStorage;
_clientStorage = clientStorage;
_caseStorage = caseStorage;
_consultationStorage = consultationStorage;
_hearingStorage = hearingStorage;
_saveToExcel = saveToExcel;
_saveToWord = saveToWord;
_saveToPdf = saveToPdf;
}*/
public List<ReportLawyerHearingViewModel> GetLawyerHearing(List<int> Ids)
{
throw new NotImplementedException();
}
if (Ids == null || !Ids.Any())
{
return new List<ReportLawyerHearingViewModel>();
}
public List<ReportLawyersViewModel> GetLawyers(ReportGuarantorBindingModel model)
{
throw new NotImplementedException();
}
var clients = _clientStorage.GetFullList();
var hearings = _hearingStorage.GetFullList();
var visits = _visitStorage.GetFullList();
public void SaveLawyerHearingToExcelFile(ReportGuarantorBindingModel model)
{
throw new NotImplementedException();
}
var filteredClients = clients.Where(c => Ids.Contains(c.Id)).ToList();
var result = new List<ReportLawyerHearingViewModel>();
public void SaveLawyerHearingToWordFile(ReportGuarantorBindingModel model)
{
throw new NotImplementedException();
}
foreach (var client in filteredClients)
{
var record = new ReportLawyerHearingViewModel
{
FIO = client.FIO,
Hearing = new List<Tuple<string, DateTime>>()
};
public void SaveLawyersToPdfFile(ReportGuarantorBindingModel model)
{
throw new NotImplementedException();
}
}
var clientVisits = visits.Where(v => v.VisitClients.ContainsKey(client.Id)).ToList();
foreach (var visit in clientVisits)
{
if (visit.HearingId.HasValue)
{
var hearing = hearings.FirstOrDefault(h => h.Id == visit.HearingId.Value);
if (hearing != null)
{
record.Hearing.Add(new Tuple<string, DateTime>(hearing.Judge, hearing.HearingDate));
}
}
}
result.Add(record);
}
return result;
}
public List<ReportLawyersViewModel> GetLawyers(ReportGuarantorBindingModel model)
{
var listAll = new List<ReportLawyersViewModel>();
// Получаем список всех дел для указанного исполнителя и за указанный период
var cases = _caseStorage.GetFilteredList(new CaseSearchModel
{
ExecutorId = model.GuarantorId,
DateFrom = model.DateFrom,
DateTo = model.DateTo
});
// Добавляем информацию о клиентах из дел
foreach (var _case in cases)
{
foreach (var cc in _case.CaseClients.Values)
{
listAll.Add(new ReportLawyersViewModel
{
FIO = cc.FIO,
Name = _case.Name,
Status = _case.Status
});
}
}
// Получаем список всех консультаций для указанного исполнителя и за указанный период
var consultations = _consultationStorage.GetFilteredList(new ConsultationSearchModel
{
GuarantorId = model.GuarantorId,
DateFrom = model.DateFrom,
DateTo = model.DateTo
});
// Добавляем информацию о клиентах из консультаций
foreach (var consultation in consultations)
{
foreach (var cc in consultation.Case.CaseClients.Values)
{
listAll.Add(new ReportLawyersViewModel
{
FIO = cc.FIO,
ConsultationDate = consultation.ConsultationDate,
Cost = consultation.Cost
});
}
}
return listAll;
}
public void SaveLawyerHearingToExcelFile(ReportGuarantorBindingModel model)
{
_saveToExcel.CreateReport(new ExcelInfoGuarantor
{
FileName = model.FileName,
Title = "Список слушаний",
LawyerHearings = GetLawyerHearing(model.Ids)
});
}
public void SaveLawyerHearingToWordFile(ReportGuarantorBindingModel model)
{
_saveToWord.CreateDoc(new WordInfoGuarantor
{
FileName = model.FileName,
Title = "Список слушаний",
LawyerHearings = GetLawyerHearing(model.Ids)
});
}
public void SaveLawyersToPdfFile(ReportGuarantorBindingModel model)
{
if (model.DateFrom == null)
{
throw new ArgumentException("Дата начала не задана");
}
if (model.DateTo == null)
{
throw new ArgumentException("Дата окончания не задана");
}
_saveToPdf.CreateDoc(new PdfInfoGuarantor
{
FileName = model.FileName,
Title = "Список клиентов",
DateFrom = model.DateFrom!.Value,
DateTo = model.DateTo!.Value,
Lawyers = GetLawyers(model)
});
}
}
}

View File

@ -1,4 +1,6 @@
using System;
using LawCompanyBusinessLogic.OfficePackage.HelperEnums;
using LawCompanyBusinessLogic.OfficePackage.HelperModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -6,7 +8,73 @@ using System.Threading.Tasks;
namespace LawCompanyBusinessLogic.OfficePackage
{
internal class AbstractSaveToExcelGuarantor
public abstract class AbstractSaveToExcelGuarantor
{
public void CreateReport(ExcelInfoGuarantor info)
{
CreateExcel(info);
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = 1,
Text = info.Title,
StyleInfo = ExcelStyleInfoType.Title
});
MergeCells(new ExcelMergeParameters
{
CellFromName = "A1",
CellToName = "C1"
});
uint rowIndex = 2;
foreach (var mc in info.LawyerHearings)
{
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = rowIndex,
Text = mc.FIO,
StyleInfo = ExcelStyleInfoType.Text
});
rowIndex++;
foreach (var conference in mc.Hearing)
{
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "B",
RowIndex = rowIndex,
Text = conference.Item1,
StyleInfo = ExcelStyleInfoType.TextWithBroder
});
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = conference.Item2.ToString("d"),
StyleInfo = ExcelStyleInfoType.TextWithBroder
});
rowIndex++;
}
rowIndex++;
}
SaveExcel(info);
}
protected abstract void CreateExcel(ExcelInfoGuarantor info);
protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams);
protected abstract void MergeCells(ExcelMergeParameters excelParams);
protected abstract void SaveExcel(ExcelInfoGuarantor info);
}
}

View File

@ -1,4 +1,6 @@
using System;
using LawCompanyBusinessLogic.OfficePackage.HelperEnums;
using LawCompanyBusinessLogic.OfficePackage.HelperModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -6,7 +8,78 @@ using System.Threading.Tasks;
namespace LawCompanyBusinessLogic.OfficePackage
{
internal class AbstractSaveToPdfGuarantor
public abstract class AbstractSaveToPdfGuarantor
{
public void CreateDoc(PdfInfoGuarantor info)
{
CreatePdf(info);
CreateParagraph(new PdfParagraph
{
Text = info.Title,
Style = "NormalTitle",
ParagraphAlignment = PdfParagraphAlignmentType.Center
});
CreateParagraph(new PdfParagraph
{
Text = $"с {info.DateFrom.ToShortDateString()} по {info.DateTo.ToShortDateString()}",
Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Center
});
CreateTable(new List<string> { "4cm", "5cm", "3cm", "4cm", "2cm" });
CreateRow(new PdfRowParameters
{
Texts = new List<string> { "ФИО юриста", "Дата консультации", "Стоимость консультации", "Название дела", "Статус дела" },
Style = "NormalTitle",
ParagraphAlignment = PdfParagraphAlignmentType.Center
});
foreach (var member in info.Lawyers)
{
bool IsDate = true;
if (member.ConsultationDate.ToShortDateString() == "01.01.0001")
{
IsDate = false;
}
bool IsCost = true;
if (member.Cost.ToString() == "0")
{
IsCost = false;
}
CreateRow(new PdfRowParameters
{
Texts = new List<string>
{
member.FIO,
IsDate is true ? member.ConsultationDate.ToShortDateString() : string.Empty,
IsCost is true ? member.Cost.ToString() : string.Empty,
member.Name,
member.Status.ToString(),
},
Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Left
});
}
CreateParagraph(new PdfParagraph
{
Text = $"Итого: {info.Lawyers.Sum(x => x.Cost)}\t",
Style = "Normal",
ParagraphAlignment = PdfParagraphAlignmentType.Rigth
});
SavePdf(info);
}
protected abstract void CreatePdf(PdfInfoGuarantor info);
protected abstract void CreateParagraph(PdfParagraph paragraph);
protected abstract void CreateTable(List<string> columns);
protected abstract void CreateRow(PdfRowParameters rowParameters);
protected abstract void SavePdf(PdfInfoGuarantor info);
}
}

View File

@ -8,73 +8,55 @@ using System.Threading.Tasks;
namespace LawCompanyBusinessLogic.OfficePackage
{
public class AbstractSaveToWordGuarantor
public abstract class AbstractSaveToWordGuarantor
{
/*public void CreateReport(ExcelInfoGuarantor info)
public void CreateDoc(WordInfoGuarantor info)
{
CreateExcel(info);
z
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "A",
RowIndex = 1,
Text = info.Title,
StyleInfo = ExcelStyleInfoType.Title
});
CreateWord(info);
MergeCells(new ExcelMergeParameters
CreateParagraph(new WordParagraph
{
CellFromName = "A1",
CellToName = "C1"
});
uint rowIndex = 2;
foreach (var mc in info.MemberConferences)
{
InsertCellInWorksheet(new ExcelCellParameters
Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24", }) },
TextProperties = new WordTextProperties
{
ColumnName = "A",
RowIndex = rowIndex,
Text = $"{mc.MemberSurname} {mc.MemberName} {mc.MemberPatronymic}",
StyleInfo = ExcelStyleInfoType.Text
Size = "24",
JustificationType = WordJustificationType.Center
}
});
foreach (var mc in info.LawyerHearings)
{
CreateParagraph(new WordParagraph
{
Texts = new List<(string, WordTextProperties)>
{ ( mc.FIO, new WordTextProperties { Size = "20", Bold=true})},
TextProperties = new WordTextProperties
{
Size = "24",
JustificationType = WordJustificationType.Both
}
});
rowIndex++;
foreach (var conference in mc.ConferenceBookings)
foreach (var conference in mc.Hearing)
{
InsertCellInWorksheet(new ExcelCellParameters
CreateParagraph(new WordParagraph
{
ColumnName = "B",
RowIndex = rowIndex,
Text = conference.Item1,
StyleInfo = ExcelStyleInfoType.TextWithBroder
Texts = new List<(string, WordTextProperties)>
{ (conference.Item1 + " - ", new WordTextProperties { Size = "16", Bold=false}),
(conference.Item2.ToShortDateString(), new WordTextProperties { Size = "16", Bold=false})},
TextProperties = new WordTextProperties
{
Size = "24",
JustificationType = WordJustificationType.Both
}
});
InsertCellInWorksheet(new ExcelCellParameters
{
ColumnName = "C",
RowIndex = rowIndex,
Text = conference.Item2.ToString("d"),
StyleInfo = ExcelStyleInfoType.TextWithBroder
});
rowIndex++;
}
rowIndex++;
}
SaveExcel(info);
SaveWord(info);
}
protected abstract void CreateExcel(ExcelInfoOrganiser info);
protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams);
protected abstract void MergeCells(ExcelMergeParameters excelParams);
protected abstract void SaveExcel(ExcelInfoOrganiser info);*/
protected abstract void CreateWord(WordInfoGuarantor info);
protected abstract void CreateParagraph(WordParagraph paragraph);
protected abstract void SaveWord(WordInfoGuarantor info);
}
}

View File

@ -1,4 +1,5 @@
using System;
using LawCompanyContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -10,6 +11,6 @@ namespace LawCompanyBusinessLogic.OfficePackage.HelperModels
{
public string FileName { get; set; } = string.Empty;
public string Title { get; set; } = string.Empty;
//public List<ReportLawyerHearingsViewModel> LawyerHearings { get; set; } = new();
public List<ReportLawyerHearingViewModel> LawyerHearings { get; set; } = new();
}
}

View File

@ -1,4 +1,5 @@
using System;
using LawCompanyContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -6,7 +7,12 @@ using System.Threading.Tasks;
namespace LawCompanyBusinessLogic.OfficePackage.HelperModels
{
internal class PdfInfoGuarantor
public class PdfInfoGuarantor
{
public string FileName { get; set; } = "C:\\Reports\\pdffile.pdf";
public string Title { get; set; } = string.Empty;
public DateTime DateFrom { get; set; }
public DateTime DateTo { get; set; }
public List<ReportLawyersViewModel> Lawyers { get; set; } = new();
}
}

View File

@ -1,4 +1,5 @@
using System;
using LawCompanyContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -6,7 +7,10 @@ using System.Threading.Tasks;
namespace LawCompanyBusinessLogic.OfficePackage.HelperModels
{
internal class WordInfoGuarantor
public class WordInfoGuarantor
{
public string FileName { get; set; } = string.Empty;
public string Title { get; set; } = string.Empty;
public List<ReportLawyerHearingViewModel> LawyerHearings { get; set; } = new();
}
}

View File

@ -8,7 +8,7 @@ using DocumentFormat.OpenXml;
namespace LawCompanyBusinessLogic.OfficePackage.Implements
{
/*public class SaveToExcelGuarantor : AbstractSaveToExcelGuarantor
public class SaveToExcelGuarantor : AbstractSaveToExcelGuarantor
{
private SpreadsheetDocument? _spreadsheetDocument;
private SharedStringTablePart? _shareStringPart;
@ -324,5 +324,5 @@ namespace LawCompanyBusinessLogic.OfficePackage.Implements
_spreadsheetDocument.WorkbookPart!.Workbook.Save();
_spreadsheetDocument.Close();
}
}*/
}
}

View File

@ -1,12 +1,103 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LawCompanyBusinessLogic.OfficePackage.HelperEnums;
using LawCompanyBusinessLogic.OfficePackage.HelperModels;
using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;
using MigraDoc.DocumentObjectModel.Tables;
namespace LawCompanyBusinessLogic.OfficePackage.Implements
{
internal class SaveToPdfGuarantor
public class SaveToPdfGuarantor : AbstractSaveToPdfGuarantor
{
private Document? _document;
private Section? _section;
private Table? _table;
private static ParagraphAlignment GetParagraphAlignment(PdfParagraphAlignmentType type)
{
return type switch
{
PdfParagraphAlignmentType.Center => ParagraphAlignment.Center,
PdfParagraphAlignmentType.Left => ParagraphAlignment.Left,
PdfParagraphAlignmentType.Rigth => ParagraphAlignment.Right,
_ => ParagraphAlignment.Justify,
};
}
private static void DefineStyles(Document document)
{
var style = document.Styles["Normal"];
style.Font.Name = "Times New Roman";
style.Font.Size = 14;
style = document.Styles.AddStyle("NormalTitle", "Normal");
style.Font.Bold = true;
}
protected override void CreateParagraph(PdfParagraph pdfParagraph)
{
if (_section == null)
{
return;
}
var paragraph = _section.AddParagraph(pdfParagraph.Text);
paragraph.Format.SpaceAfter = "1cm";
paragraph.Format.Alignment = GetParagraphAlignment(pdfParagraph.ParagraphAlignment);
paragraph.Style = pdfParagraph.Style;
}
protected override void CreatePdf(PdfInfoGuarantor info)
{
_document = new Document();
DefineStyles(_document);
_section = _document.AddSection();
}
protected override void CreateRow(PdfRowParameters rowParameters)
{
if (_table == null)
{
return;
}
var row = _table.AddRow();
for (int i = 0; i < rowParameters.Texts.Count; ++i)
{
row.Cells[i].AddParagraph(rowParameters.Texts[i]);
if (!string.IsNullOrEmpty(rowParameters.Style))
{
row.Cells[i].Style = rowParameters.Style;
}
Unit borderWidth = 0.5;
row.Cells[i].Borders.Left.Width = borderWidth;
row.Cells[i].Borders.Right.Width = borderWidth;
row.Cells[i].Borders.Top.Width = borderWidth;
row.Cells[i].Borders.Bottom.Width = borderWidth;
row.Cells[i].Format.Alignment = GetParagraphAlignment(rowParameters.ParagraphAlignment);
row.Cells[i].VerticalAlignment = VerticalAlignment.Center;
}
}
protected override void CreateTable(List<string> columns)
{
if (_document == null)
{
return;
}
_table = _document.LastSection.AddTable();
foreach (var elem in columns)
{
_table.AddColumn(elem);
}
}
protected override void SavePdf(PdfInfoGuarantor info)
{
var renderer = new PdfDocumentRenderer(true)
{
Document = _document
};
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
renderer.RenderDocument();
renderer.PdfDocument.Save(info.FileName);
}
}
}

View File

@ -1,4 +1,9 @@
using System;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using DocumentFormat.OpenXml;
using LawCompanyBusinessLogic.OfficePackage.HelperEnums;
using LawCompanyBusinessLogic.OfficePackage.HelperModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -6,7 +11,120 @@ using System.Threading.Tasks;
namespace LawCompanyBusinessLogic.OfficePackage.Implements
{
internal class SaveToWordGuarantor
public class SaveToWordGuarantor : AbstractSaveToWordGuarantor
{
private WordprocessingDocument? _wordDocument;
private Body? _docBody;
private static JustificationValues GetJustificationValues(WordJustificationType type)
{
return type switch
{
WordJustificationType.Both => JustificationValues.Both,
WordJustificationType.Center => JustificationValues.Center,
_ => JustificationValues.Left,
};
}
private static SectionProperties CreateSectionProperties()
{
var properties = new SectionProperties();
var pageSize = new PageSize
{
Orient = PageOrientationValues.Portrait
};
properties.AppendChild(pageSize);
return properties;
}
private static ParagraphProperties? CreateParagraphProperties(WordTextProperties? paragraphProperties)
{
if (paragraphProperties == null)
{
return null;
}
var properties = new ParagraphProperties();
properties.AppendChild(new Justification()
{
Val = GetJustificationValues(paragraphProperties.JustificationType)
});
properties.AppendChild(new SpacingBetweenLines
{
LineRule = LineSpacingRuleValues.Auto
});
properties.AppendChild(new Indentation());
var paragraphMarkRunProperties = new ParagraphMarkRunProperties();
if (!string.IsNullOrEmpty(paragraphProperties.Size))
{
paragraphMarkRunProperties.AppendChild(new FontSize
{
Val = paragraphProperties.Size
});
}
properties.AppendChild(paragraphMarkRunProperties);
return properties;
}
protected override void CreateParagraph(WordParagraph paragraph)
{
if (_docBody == null || paragraph == null)
{
return;
}
var docParagraph = new Paragraph();
docParagraph.AppendChild(CreateParagraphProperties(paragraph.TextProperties));
foreach (var run in paragraph.Texts)
{
var docRun = new Run();
var properties = new RunProperties();
properties.AppendChild(new FontSize { Val = run.Item2.Size });
if (run.Item2.Bold)
{
properties.AppendChild(new Bold());
}
docRun.AppendChild(properties);
docRun.AppendChild(new Text
{
Text = run.Item1,
Space = SpaceProcessingModeValues.Preserve
});
docParagraph.AppendChild(docRun);
}
_docBody.AppendChild(docParagraph);
}
protected override void CreateWord(WordInfoGuarantor info)
{
_wordDocument = WordprocessingDocument.Create(info.FileName, WordprocessingDocumentType.Document);
MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart();
mainPart.Document = new Document();
_docBody = mainPart.Document.AppendChild(new Body());
}
protected override void SaveWord(WordInfoGuarantor info)
{
if (_docBody == null || _wordDocument == null)
{
return;
}
_docBody.AppendChild(CreateSectionProperties());
_wordDocument.MainDocumentPart!.Document.Save();
_wordDocument.Close();
}
}
}

View File

@ -7,7 +7,7 @@ namespace LawCompanyContracts.BindingModels
public int Id { get; set; }
public double Cost { get; set; }
public DateTime ConsultationDate { get; set; }
public int CaseId { get; set; }
public int? CaseId { get; set; }
public int GuarantorId { get; set; }
public Dictionary<int, ILawyerModel> ConsultationLawyers { get; set; } = new();
}

View File

@ -9,7 +9,6 @@ namespace LawCompanyContracts.BindingModels
public class ReportGuarantorBindingModel
{
public string FileName { get; set; } = string.Empty;
public string HearingName { get; set; } = string.Empty;
public DateTime? DateFrom { get; set; }
public DateTime? DateTo { get; set; }
public List<int>? Ids { get; set; }

View File

@ -1,5 +1,6 @@
using LawCompanyDataModels.Models;
using System.ComponentModel;
using System.Text.Json.Serialization;
namespace LawCompanyContracts.ViewModels
{
@ -11,11 +12,17 @@ namespace LawCompanyContracts.ViewModels
public double Cost { get; set; }
[DisplayName("Дата консультации")]
public DateTime ConsultationDate { get; set; }
[DisplayName("Дело")]
public string CaseName { get; set; } = string.Empty;
public int CaseId { get; set; }
public int? CaseId { get; set; }
public int GuarantorId { get; set; }
public Dictionary<int, ILawyerModel> ConsultationLawyers { get; set; } = new();
public CaseViewModel Case { get; set; }
}
public ConsultationViewModel() { }
[JsonConstructor]
public ConsultationViewModel(Dictionary<int, LawyerViewModel> ConsultationLawyers)
{
this.ConsultationLawyers = ConsultationLawyers.ToDictionary(x => x.Key, x => x.Value as ILawyerModel);
}
}
}

View File

@ -8,5 +8,7 @@ namespace LawCompanyContracts.ViewModels
{
public class ReportLawyerHearingViewModel
{
public string FIO { get; set; } = string.Empty;
public List<Tuple<string, DateTime>> Hearing { get; set; } = new();
}
}

View File

@ -1,4 +1,5 @@
using System;
using LawCompanyDataModels.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@ -8,5 +9,13 @@ namespace LawCompanyContracts.ViewModels
{
public class ReportLawyersViewModel
{
// клиент
public string FIO { get; set; } = string.Empty;
// дело
public string Name { get; set; } = string.Empty;
public CaseStatus Status { get; set; } = CaseStatus.Неизвестен;
// консультация
public DateTime ConsultationDate { get; set; }
public double Cost { get; set; }
}
}

View File

@ -7,7 +7,7 @@ namespace LawCompanyDataModels.Models
Dictionary<int, ILawyerModel> ConsultationLawyers { get; }
double Cost { get; }
DateTime ConsultationDate { get; }
public int CaseId { get; }
public int? CaseId { get; }
public int GuarantorId { get; }
}
}

View File

@ -9,36 +9,23 @@ namespace LawCompanyDatabaseImplement.Implements
{
public class ConsultationStorage : IConsultationStorage
{
public List<ConsultationViewModel> GetFullList()
{
using var context = new LawCompanyDatabase();
return context.Consultations
.Include(x => x.Lawyers)
.ThenInclude(x => x.Lawyer)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public List<ConsultationViewModel> GetFilteredList(ConsultationSearchModel model)
{
if (!model.Id.HasValue && !model.GuarantorId.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue
&& !model.ConsultationDate.HasValue && !model.CaseId.HasValue)
public List<ConsultationViewModel> GetFullList()
{
using var context = new LawCompanyDatabase();
return context.Consultations
.Include(x => x.Lawyers)
.ThenInclude(x => x.Lawyer)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public List<ConsultationViewModel> GetFilteredList(ConsultationSearchModel model)
{
if (!model.Id.HasValue && !model.GuarantorId.HasValue)
{
return new();
}
if (model.GuarantorId.HasValue && model.DateFrom.HasValue && model.DateTo.HasValue)
{
using var context = new LawCompanyDatabase();
return context.Consultations
.Include(x => x.Lawyers)
.ThenInclude(x => x.Lawyer)
.Where(x => x.GuarantorId == model.GuarantorId && x.ConsultationDate >= model.DateFrom
&& x.ConsultationDate <= model.DateTo)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
else if (model.GuarantorId.HasValue)
if (model.GuarantorId.HasValue)
{
using var context = new LawCompanyDatabase();
return context.Consultations
@ -48,91 +35,76 @@ namespace LawCompanyDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
else if (!model.DateFrom.HasValue || !model.DateTo.HasValue)
{
using var context = new LawCompanyDatabase();
return context.Consultations
.Include(x => x.Lawyers)
.ThenInclude(x => x.Lawyer)
.Where(x => x.Id == model.Id)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
else
{
using var context = new LawCompanyDatabase();
return context.Consultations
.Include(x => x.Lawyers)
.ThenInclude(x => x.Lawyer)
.Where(x => x.ConsultationDate >= model.DateFrom && x.ConsultationDate <= model.DateTo)
.ToList()
.Where(x => x.Id == model.Id)
.Select(x => x.GetViewModel)
.ToList();
}
}
public ConsultationViewModel? GetElement(ConsultationSearchModel model)
{
if (!model.Id.HasValue && !model.GuarantorId.HasValue && !model.ConsultationDate.HasValue)
{
return null;
}
using var context = new LawCompanyDatabase();
return context.Consultations.
Include(x => x.Lawyers).
ThenInclude(x => x.Lawyer)
.FirstOrDefault(x => (model.GuarantorId.HasValue && x.GuarantorId == model.GuarantorId)
|| (model.Id.HasValue && x.Id == model.Id))?.GetViewModel;
}
public ConsultationViewModel? Insert(ConsultationBindingModel model)
{
using var context = new LawCompanyDatabase();
var newConsultation = Consultation.Create(context, model);
if (newConsultation == null)
{
return null;
}
context.Consultations.Add(newConsultation);
context.SaveChanges();
return newConsultation.GetViewModel;
}
public ConsultationViewModel? Update(ConsultationBindingModel model)
{
using var context = new LawCompanyDatabase();
using var transaction = context.Database.BeginTransaction();
try
{
var consultation = context.Consultations.FirstOrDefault(rec =>
rec.Id == model.Id);
if (consultation == null)
{
return null;
}
consultation.Update(model);
context.SaveChanges();
consultation.UpdateLawyers(context, model);
transaction.Commit();
return consultation.GetViewModel;
}
catch
{
transaction.Rollback();
throw;
}
}
public ConsultationViewModel? Delete(ConsultationBindingModel model)
{
using var context = new LawCompanyDatabase();
var element = context.Consultations
.Include(x => x.Lawyers)
.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Consultations.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
public ConsultationViewModel? GetElement(ConsultationSearchModel model)
{
if (!model.Id.HasValue)
{
return null;
}
using var context = new LawCompanyDatabase();
return context.Consultations
.Include(x => x.Lawyers)
.ThenInclude(x => x.Lawyer)
.FirstOrDefault(x => (model.Id.HasValue && x.Id == model.Id))?
.GetViewModel;
}
public ConsultationViewModel? Insert(ConsultationBindingModel model)
{
using var context = new LawCompanyDatabase();
var newConsult = Consultation.Create(context, model);
if (newConsult == null)
{
return null;
}
context.Consultations.Add(newConsult);
context.SaveChanges();
return newConsult.GetViewModel;
}
public ConsultationViewModel? Update(ConsultationBindingModel model)
{
using var context = new LawCompanyDatabase();
using var transaction = context.Database.BeginTransaction();
try
{
var consult = context.Consultations.FirstOrDefault(rec => rec.Id == model.Id);
if (consult == null)
{
return null;
}
consult.Update(model);
context.SaveChanges();
consult.UpdateLawyers(context, model);
transaction.Commit();
return consult.GetViewModel;
}
catch
{
throw;
}
}
public ConsultationViewModel? Delete(ConsultationBindingModel model)
{
using var context = new LawCompanyDatabase();
var element = context.Consultations.Include(x => x.Lawyers).FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Consultations.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -100,30 +100,31 @@ namespace LawCompanyDatabaseImplement.Implements
using var transaction = context.Database.BeginTransaction();
try
{
var _case = context.Hearings.FirstOrDefault(rec =>
rec.Id == model.Id);
var _case = context.Hearings.FirstOrDefault(rec => rec.Id == model.Id);
if (_case == null)
{
return null;
}
_case.Update(model);
context.SaveChanges();
_case.UpdateLawyers(context, model);
if (model.HearingLawyers != null)
{
_case.UpdateLawyers(context, model);
}
transaction.Commit();
transaction.Commit();
return _case.GetViewModel;
}
catch
{
throw;
transaction.Rollback();
throw;
}
}
public HearingViewModel? Delete(HearingBindingModel model)
{
using var context = new LawCompanyDatabase();
var element = context.Hearings
.Include(x => x.Lawyers)
.FirstOrDefault(rec => rec.Id == model.Id);
var element = context.Hearings.Include(x => x.Lawyers).FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Hearings.Remove(element);

View File

@ -39,7 +39,8 @@ namespace LawCompanyDatabaseImplement.Implements
{
using var context = new LawCompanyDatabase();
return context.Visits
.Include(x => x.Clients).ThenInclude(x => x.Client)
.Include(x => x.Clients)
.ThenInclude(x => x.Client)
.Where(x => x.ExecutorId == model.ExecutorId)
.Select(x => x.GetViewModel)
.ToList();

View File

@ -15,8 +15,8 @@ namespace LawCompanyDatabaseImplement
{
if (optionsBuilder.IsConfigured == false)
{
optionsBuilder.UseSqlServer(@"Data Source=LAPTOP-6GNIALH9\SQLEXPRESS;Initial Catalog=LawCompanyDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
//optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-H8060U3\SQLEXPRESS;Initial Catalog=LawCompanyDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
//optionsBuilder.UseSqlServer(@"Data Source=LAPTOP-6GNIALH9\SQLEXPRESS;Initial Catalog=LawCompanyDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-7DB3VEN\SQLEXPRESS;Initial Catalog=Test1;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
}
base.OnConfiguring(optionsBuilder);
}

View File

@ -0,0 +1,540 @@
// <auto-generated />
using System;
using LawCompanyDatabaseImplement;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace LawCompanyDatabaseImplement.Migrations
{
[DbContext(typeof(LawCompanyDatabase))]
[Migration("20240526230043_test")]
partial class test
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.17")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Case", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime>("DateCreate")
.HasColumnType("datetime2");
b.Property<DateTime?>("DateImplement")
.HasColumnType("datetime2");
b.Property<int>("ExecutorId")
.HasColumnType("int");
b.Property<string>("Name")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("Status")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ExecutorId");
b.ToTable("Cases");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.CaseClient", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CaseId")
.HasColumnType("int");
b.Property<int>("ClientId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("CaseId");
b.HasIndex("ClientId");
b.ToTable("CaseClients");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("ExecutorId")
.HasColumnType("int");
b.Property<string>("FIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Phone")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("ExecutorId");
b.ToTable("Clients");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Consultation", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int?>("CaseId")
.IsRequired()
.HasColumnType("int");
b.Property<DateTime>("ConsultationDate")
.HasColumnType("datetime2");
b.Property<double>("Cost")
.HasColumnType("float");
b.Property<int>("GuarantorId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("CaseId");
b.HasIndex("GuarantorId");
b.ToTable("Consultations");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.ConsultationLawyer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ConsultationId")
.HasColumnType("int");
b.Property<int>("LawyerId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ConsultationId");
b.HasIndex("LawyerId");
b.ToTable("ConsultationLawyers");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Executor", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("FIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Executors");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Guarantor", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("FIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Guarantors");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Hearing", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("GuarantorId")
.HasColumnType("int");
b.Property<DateTime>("HearingDate")
.HasColumnType("datetime2");
b.Property<string>("Judge")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("GuarantorId");
b.ToTable("Hearings");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.HearingLawyer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("HearingId")
.HasColumnType("int");
b.Property<int>("LawyerId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("HearingId");
b.HasIndex("LawyerId");
b.ToTable("HearingLawyers");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Lawyer", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("FIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int?>("GuarantorId")
.HasColumnType("int");
b.Property<string>("Phone")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("GuarantorId");
b.ToTable("Lawyers");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Visit", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ExecutorId")
.HasColumnType("int");
b.Property<int?>("HearingId")
.HasColumnType("int");
b.Property<DateTime>("VisitDate")
.HasColumnType("datetime2");
b.HasKey("Id");
b.HasIndex("ExecutorId");
b.HasIndex("HearingId");
b.ToTable("Visits");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.VisitClient", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ClientId")
.HasColumnType("int");
b.Property<int>("VisitId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ClientId");
b.HasIndex("VisitId");
b.ToTable("VisitClients");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Case", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Executor", null)
.WithMany("Cases")
.HasForeignKey("ExecutorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.CaseClient", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Case", "Case")
.WithMany("Clients")
.HasForeignKey("CaseId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("LawCompanyDatabaseImplement.Models.Client", "Client")
.WithMany("CaseClients")
.HasForeignKey("ClientId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Case");
b.Navigation("Client");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Client", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Executor", "Executor")
.WithMany("Clients")
.HasForeignKey("ExecutorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Executor");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Consultation", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Case", "Case")
.WithMany()
.HasForeignKey("CaseId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("LawCompanyDatabaseImplement.Models.Guarantor", null)
.WithMany("Consultations")
.HasForeignKey("GuarantorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Case");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.ConsultationLawyer", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Consultation", "Consultation")
.WithMany("Lawyers")
.HasForeignKey("ConsultationId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("LawCompanyDatabaseImplement.Models.Lawyer", "Lawyer")
.WithMany("ConsultationLawyers")
.HasForeignKey("LawyerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Consultation");
b.Navigation("Lawyer");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Hearing", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Guarantor", null)
.WithMany("Hearings")
.HasForeignKey("GuarantorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.HearingLawyer", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Hearing", "Hearing")
.WithMany("Lawyers")
.HasForeignKey("HearingId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("LawCompanyDatabaseImplement.Models.Lawyer", "Lawyer")
.WithMany("HearingLawyers")
.HasForeignKey("LawyerId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Hearing");
b.Navigation("Lawyer");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Lawyer", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Guarantor", null)
.WithMany("Lawyers")
.HasForeignKey("GuarantorId");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Visit", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Executor", null)
.WithMany("Visits")
.HasForeignKey("ExecutorId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("LawCompanyDatabaseImplement.Models.Hearing", "Hearing")
.WithMany()
.HasForeignKey("HearingId");
b.Navigation("Hearing");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.VisitClient", b =>
{
b.HasOne("LawCompanyDatabaseImplement.Models.Client", "Client")
.WithMany("ClientVisits")
.HasForeignKey("ClientId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("LawCompanyDatabaseImplement.Models.Visit", "Visit")
.WithMany("Clients")
.HasForeignKey("VisitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Client");
b.Navigation("Visit");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Case", b =>
{
b.Navigation("Clients");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Client", b =>
{
b.Navigation("CaseClients");
b.Navigation("ClientVisits");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Consultation", b =>
{
b.Navigation("Lawyers");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Executor", b =>
{
b.Navigation("Cases");
b.Navigation("Clients");
b.Navigation("Visits");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Guarantor", b =>
{
b.Navigation("Consultations");
b.Navigation("Hearings");
b.Navigation("Lawyers");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Hearing", b =>
{
b.Navigation("Lawyers");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Lawyer", b =>
{
b.Navigation("ConsultationLawyers");
b.Navigation("HearingLawyers");
});
modelBuilder.Entity("LawCompanyDatabaseImplement.Models.Visit", b =>
{
b.Navigation("Clients");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,410 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace LawCompanyDatabaseImplement.Migrations
{
/// <inheritdoc />
public partial class test : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Executors",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Executors", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Guarantors",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Guarantors", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Cases",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
DateCreate = table.Column<DateTime>(type: "datetime2", nullable: false),
DateImplement = table.Column<DateTime>(type: "datetime2", nullable: true),
Status = table.Column<int>(type: "int", nullable: false),
ExecutorId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Cases", x => x.Id);
table.ForeignKey(
name: "FK_Cases_Executors_ExecutorId",
column: x => x.ExecutorId,
principalTable: "Executors",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Clients",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Phone = table.Column<string>(type: "nvarchar(max)", nullable: false),
ExecutorId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Clients", x => x.Id);
table.ForeignKey(
name: "FK_Clients_Executors_ExecutorId",
column: x => x.ExecutorId,
principalTable: "Executors",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Hearings",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
HearingDate = table.Column<DateTime>(type: "datetime2", nullable: false),
Judge = table.Column<string>(type: "nvarchar(max)", nullable: false),
GuarantorId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Hearings", x => x.Id);
table.ForeignKey(
name: "FK_Hearings_Guarantors_GuarantorId",
column: x => x.GuarantorId,
principalTable: "Guarantors",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Lawyers",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Phone = table.Column<string>(type: "nvarchar(max)", nullable: false),
GuarantorId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Lawyers", x => x.Id);
table.ForeignKey(
name: "FK_Lawyers_Guarantors_GuarantorId",
column: x => x.GuarantorId,
principalTable: "Guarantors",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "Consultations",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Cost = table.Column<double>(type: "float", nullable: false),
ConsultationDate = table.Column<DateTime>(type: "datetime2", nullable: false),
CaseId = table.Column<int>(type: "int", nullable: true),
GuarantorId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Consultations", x => x.Id);
table.ForeignKey(
name: "FK_Consultations_Cases_CaseId",
column: x => x.CaseId,
principalTable: "Cases",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Consultations_Guarantors_GuarantorId",
column: x => x.GuarantorId,
principalTable: "Guarantors",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "CaseClients",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
CaseId = table.Column<int>(type: "int", nullable: false),
ClientId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_CaseClients", x => x.Id);
table.ForeignKey(
name: "FK_CaseClients_Cases_CaseId",
column: x => x.CaseId,
principalTable: "Cases",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_CaseClients_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Visits",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
VisitDate = table.Column<DateTime>(type: "datetime2", nullable: false),
HearingId = table.Column<int>(type: "int", nullable: true),
ExecutorId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Visits", x => x.Id);
table.ForeignKey(
name: "FK_Visits_Executors_ExecutorId",
column: x => x.ExecutorId,
principalTable: "Executors",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Visits_Hearings_HearingId",
column: x => x.HearingId,
principalTable: "Hearings",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "HearingLawyers",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
HearingId = table.Column<int>(type: "int", nullable: false),
LawyerId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_HearingLawyers", x => x.Id);
table.ForeignKey(
name: "FK_HearingLawyers_Hearings_HearingId",
column: x => x.HearingId,
principalTable: "Hearings",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_HearingLawyers_Lawyers_LawyerId",
column: x => x.LawyerId,
principalTable: "Lawyers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ConsultationLawyers",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ConsultationId = table.Column<int>(type: "int", nullable: false),
LawyerId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ConsultationLawyers", x => x.Id);
table.ForeignKey(
name: "FK_ConsultationLawyers_Consultations_ConsultationId",
column: x => x.ConsultationId,
principalTable: "Consultations",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ConsultationLawyers_Lawyers_LawyerId",
column: x => x.LawyerId,
principalTable: "Lawyers",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "VisitClients",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ClientId = table.Column<int>(type: "int", nullable: false),
VisitId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_VisitClients", x => x.Id);
table.ForeignKey(
name: "FK_VisitClients_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_VisitClients_Visits_VisitId",
column: x => x.VisitId,
principalTable: "Visits",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateIndex(
name: "IX_CaseClients_CaseId",
table: "CaseClients",
column: "CaseId");
migrationBuilder.CreateIndex(
name: "IX_CaseClients_ClientId",
table: "CaseClients",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_Cases_ExecutorId",
table: "Cases",
column: "ExecutorId");
migrationBuilder.CreateIndex(
name: "IX_Clients_ExecutorId",
table: "Clients",
column: "ExecutorId");
migrationBuilder.CreateIndex(
name: "IX_ConsultationLawyers_ConsultationId",
table: "ConsultationLawyers",
column: "ConsultationId");
migrationBuilder.CreateIndex(
name: "IX_ConsultationLawyers_LawyerId",
table: "ConsultationLawyers",
column: "LawyerId");
migrationBuilder.CreateIndex(
name: "IX_Consultations_CaseId",
table: "Consultations",
column: "CaseId");
migrationBuilder.CreateIndex(
name: "IX_Consultations_GuarantorId",
table: "Consultations",
column: "GuarantorId");
migrationBuilder.CreateIndex(
name: "IX_HearingLawyers_HearingId",
table: "HearingLawyers",
column: "HearingId");
migrationBuilder.CreateIndex(
name: "IX_HearingLawyers_LawyerId",
table: "HearingLawyers",
column: "LawyerId");
migrationBuilder.CreateIndex(
name: "IX_Hearings_GuarantorId",
table: "Hearings",
column: "GuarantorId");
migrationBuilder.CreateIndex(
name: "IX_Lawyers_GuarantorId",
table: "Lawyers",
column: "GuarantorId");
migrationBuilder.CreateIndex(
name: "IX_VisitClients_ClientId",
table: "VisitClients",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_VisitClients_VisitId",
table: "VisitClients",
column: "VisitId");
migrationBuilder.CreateIndex(
name: "IX_Visits_ExecutorId",
table: "Visits",
column: "ExecutorId");
migrationBuilder.CreateIndex(
name: "IX_Visits_HearingId",
table: "Visits",
column: "HearingId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "CaseClients");
migrationBuilder.DropTable(
name: "ConsultationLawyers");
migrationBuilder.DropTable(
name: "HearingLawyers");
migrationBuilder.DropTable(
name: "VisitClients");
migrationBuilder.DropTable(
name: "Consultations");
migrationBuilder.DropTable(
name: "Lawyers");
migrationBuilder.DropTable(
name: "Clients");
migrationBuilder.DropTable(
name: "Visits");
migrationBuilder.DropTable(
name: "Cases");
migrationBuilder.DropTable(
name: "Hearings");
migrationBuilder.DropTable(
name: "Executors");
migrationBuilder.DropTable(
name: "Guarantors");
}
}
}

View File

@ -114,7 +114,8 @@ namespace LawCompanyDatabaseImplement.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("CaseId")
b.Property<int?>("CaseId")
.IsRequired()
.HasColumnType("int");
b.Property<DateTime>("ConsultationDate")

View File

@ -15,11 +15,11 @@ namespace LawCompanyDatabaseImplement.Models
[Required]
public DateTime ConsultationDate { get; private set; }
[Required]
public int CaseId { get; private set; }
public int? CaseId { get; private set; }
public Case Case { get; private set; }
public int GuarantorId { get; set; }
private Dictionary<int, ILawyerModel>? _consultationLawyers = null;
private Dictionary<int, ILawyerModel> _consultationLawyers = null;
[ForeignKey("ConsultationId")]
public virtual List<ConsultationLawyer> Lawyers { get; set; } = new();
[NotMapped]
@ -30,9 +30,7 @@ namespace LawCompanyDatabaseImplement.Models
if (_consultationLawyers == null)
{
using var context = new LawCompanyDatabase();
_consultationLawyers = Lawyers
.ToDictionary(x => x.LawyerId, x => (context.Lawyers
.FirstOrDefault(y => y.Id == x.LawyerId) as ILawyerModel));
_consultationLawyers = Lawyers.ToDictionary(x => x.LawyerId, x => (x.Lawyer as ILawyerModel));
}
return _consultationLawyers;
}
@ -54,7 +52,6 @@ namespace LawCompanyDatabaseImplement.Models
Cost = model.Cost,
ConsultationDate = model.ConsultationDate,
CaseId = model.CaseId,
Case = context.Cases.First(x => x.Id == model.CaseId),
GuarantorId = model.GuarantorId,
Lawyers = model.ConsultationLawyers.Select(x => new ConsultationLawyer
{
@ -81,34 +78,30 @@ namespace LawCompanyDatabaseImplement.Models
Cost = Cost,
ConsultationDate = ConsultationDate,
CaseId = CaseId,
GuarantorId = GuarantorId,
ConsultationLawyers = ConsultationLawyers
};
public void UpdateLawyers(LawCompanyDatabase context,
ConsultationBindingModel model)
public void UpdateLawyers(LawCompanyDatabase context, ConsultationBindingModel model)
{
var consultationLawyers = context.ConsultationLawyers
.Where(rec => rec.ConsultationId == model.Id)
.ToList();
var consultationLawyers = context.ConsultationLawyers.Where(rec => rec.ConsultationId == model.Id).ToList();
if (consultationLawyers != null && consultationLawyers.Count > 0)
{
context.ConsultationLawyers
.RemoveRange(consultationLawyers
.Where(rec => !model.ConsultationLawyers
.ContainsKey(rec.LawyerId)));
context.ConsultationLawyers.RemoveRange(consultationLawyers.Where(rec => !model.ConsultationLawyers.ContainsKey(rec.LawyerId)));
context.SaveChanges();
}
foreach (var updateMember in consultationLawyers)
{
model.ConsultationLawyers.Remove(updateMember.LawyerId);
}
context.SaveChanges();
}
var _consultation = context.Consultations.First(x => x.Id == Id);
foreach (var pc in model.ConsultationLawyers)
{
if (!ConsultationLawyers.ContainsKey(pc.Key))
context.ConsultationLawyers.Add(new ConsultationLawyer
{
context.ConsultationLawyers.Add(new ConsultationLawyer
{
Consultation = _consultation,
Lawyer = context.Lawyers.First(x => x.Id == pc.Key),
});
}
Consultation = _consultation,
Lawyer = context.Lawyers.First(x => x.Id == pc.Key),
});
context.SaveChanges();
}
_consultationLawyers = null;

View File

@ -16,7 +16,7 @@ namespace LawCompanyDatabaseImplement.Models
[Required]
public string Judge { get; private set; } = string.Empty;
public int GuarantorId { get; set; }
private Dictionary<int, ILawyerModel>? _hearingLawyers = null;
private Dictionary<int, ILawyerModel> _hearingLawyers = null;
[ForeignKey("HearingId")]
public virtual List<HearingLawyer> Lawyers { get; set; } = new();
[NotMapped]
@ -26,10 +26,7 @@ namespace LawCompanyDatabaseImplement.Models
{
if (_hearingLawyers == null)
{
using var context = new LawCompanyDatabase();
_hearingLawyers = Lawyers
.ToDictionary(x => x.LawyerId, x => (context.Lawyers
.FirstOrDefault(y => y.Id == x.LawyerId) as ILawyerModel));
_hearingLawyers = Lawyers.ToDictionary(x => x.LawyerId, x => (x.Lawyer as ILawyerModel));
}
return _hearingLawyers;
}
@ -66,31 +63,33 @@ namespace LawCompanyDatabaseImplement.Models
Id = Id,
HearingDate = HearingDate,
Judge = Judge,
GuarantorId = GuarantorId,
HearingLawyers = HearingLawyers
GuarantorId = GuarantorId
};
public void UpdateLawyers(LawCompanyDatabase context, HearingBindingModel model)
{
var hearingLawyer = context.HearingLawyers
.Where(rec => rec.HearingId == model.Id)
.ToList();
var hearingLawyer = context.HearingLawyers.Where(rec => rec.HearingId == model.Id).ToList();
if (hearingLawyer != null && hearingLawyer.Count > 0)
{
context.HearingLawyers.RemoveRange(hearingLawyer.Where(rec
=> !model.HearingLawyers.ContainsKey(rec.LawyerId)));
context.HearingLawyers.RemoveRange(hearingLawyer.Where(rec => !model.HearingLawyers.ContainsKey(rec.LawyerId)));
context.SaveChanges();
}
foreach (var updateMember in hearingLawyer)
{
model.HearingLawyers.Remove(updateMember.LawyerId);
}
context.SaveChanges();
}
var _hearing = context.Hearings.First(x => x.Id == Id);
foreach (var pc in model.HearingLawyers)
{
if (!HearingLawyers.ContainsKey(pc.Key))
context.HearingLawyers.Add(new HearingLawyer
{
context.HearingLawyers.Add(new HearingLawyer
{
Hearing = _hearing,
Lawyer = context.Lawyers.First(x => x.Id == pc.Key),
});
}
Hearing = _hearing,
Lawyer = context.Lawyers.First(x => x.Id == pc.Key),
});
context.SaveChanges();
}
_hearingLawyers = null;

View File

@ -3,7 +3,6 @@ using LawCompanyContracts.ViewModels;
using LawCompanyDataModels.Models;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.Design;
namespace LawCompanyDatabaseImplement.Models
{

View File

@ -1,12 +1,108 @@
using Microsoft.AspNetCore.Mvc;
using LawCompanyContracts.BindingModels;
using LawCompanyContracts.SearchModels;
using LawCompanyContracts.ViewModels;
using LawCompanyDatabaseImplement.Models;
using LawCompanyDataModels.Models;
using Microsoft.AspNetCore.Mvc;
namespace LawCompanyGuarantorApp.Controllers
{
public class ConsultationController : Controller
{
public IActionResult Index()
[HttpGet]
public IActionResult ConsultationLawyers(int id)
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<LawyerViewModel>>($"api/consultation/getlawyerlisttoconsultation?conId={id}"));
}
[HttpGet]
public IActionResult CreateConsultation()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Lawyers = APIClient.GetRequest<List<LawyerViewModel>>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}");
return View();
}
[HttpPost]
public void CreateConsultation(int cost, DateTime date, List<int> clientselect)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
Dictionary<int, ILawyerModel> client = new Dictionary<int, ILawyerModel>();
foreach (int members in clientselect)
{
client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel);
}
APIClient.PostRequest("api/consultation/createconsultation", new ConsultationBindingModel
{
Cost = cost,
ConsultationDate = date,
ConsultationLawyers = client,
GuarantorId = APIClient.Guarantor.Id,
});
Response.Redirect("/Home/Consultations");
}
[HttpGet]
public IActionResult UpdateConsultation()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Lawyers = APIClient.GetRequest<List<LawyerViewModel>>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}");
return View();
}
[HttpPost]
public void UpdateConsultation(int id, int cost, DateTime date, List<int> clientselect)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
Dictionary<int, ILawyerModel> client = new Dictionary<int, ILawyerModel>();
foreach (int members in clientselect)
{
client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel);
}
APIClient.PostRequest("api/consultation/updateconsultation", new ConsultationBindingModel
{
Id = id,
Cost = cost,
ConsultationDate = date,
ConsultationLawyers = client,
GuarantorId = APIClient.Guarantor.Id,
});
Response.Redirect("/Home/Consultations");
}
[HttpPost]
public void DeleteConsultation(int id)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
APIClient.PostRequest("api/consultation/deleteconsultation", new ConsultationBindingModel
{
Id = id
});
Response.Redirect("/Home/Consultations");
}
}
}

View File

@ -1,12 +1,109 @@
using Microsoft.AspNetCore.Mvc;
using LawCompanyContracts.BindingModels;
using LawCompanyContracts.SearchModels;
using LawCompanyContracts.ViewModels;
using LawCompanyDatabaseImplement.Models;
using LawCompanyDataModels.Models;
using Microsoft.AspNetCore.Mvc;
namespace LawCompanyGuarantorApp.Controllers
{
public class HearingController : Controller
{
public IActionResult Index()
{
return View();
}
}
[HttpGet]
public IActionResult HearingLawyers(int id)
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<LawyerViewModel>>($"api/hearing/getlawyerlisttohearing?hearingId={id}"));
}
[HttpGet]
public IActionResult CreateHearing()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Lawyers = APIClient.GetRequest<List<LawyerViewModel>>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}");
return View();
}
[HttpPost]
public void CreateHearing(DateTime date, string judge, List<int> clientselect)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
Dictionary<int, ILawyerModel> client = new Dictionary<int, ILawyerModel>();
foreach (int members in clientselect)
{
client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel);
}
APIClient.PostRequest("api/hearing/createhearing", new HearingBindingModel
{
HearingDate = date,
Judge = judge,
HearingLawyers = client,
GuarantorId = APIClient.Guarantor.Id,
});
Response.Redirect("/Home/Hearings");
}
[HttpGet]
public IActionResult UpdateHearing()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Lawyers = APIClient.GetRequest<List<LawyerViewModel>>($"api/lawyer/GetLawyerList?guarantorId={APIClient.Guarantor.Id}");
return View();
}
[HttpPost]
public void UpdateHearing(int id, DateTime date, string judge, List<int> clientselect)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
Dictionary<int, ILawyerModel> client = new Dictionary<int, ILawyerModel>();
foreach (int members in clientselect)
{
client.Add(members, new LawyerSearchModel { Id = members } as ILawyerModel);
}
APIClient.PostRequest("api/hearing/updatehearing", new HearingBindingModel
{
Id = id,
HearingDate = date,
Judge = judge,
HearingLawyers = client,
GuarantorId = APIClient.Guarantor.Id,
});
Response.Redirect("/Home/Hearings");
}
[HttpPost]
public void DeleteHearing(int id)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
APIClient.PostRequest("api/hearing/deletehearing", new HearingBindingModel
{
Id = id
});
Response.Redirect("/Home/Hearings");
}
}
}

View File

@ -1,4 +1,6 @@
using LawCompanyGuarantorApp.Models;
using LawCompanyContracts.BindingModels;
using LawCompanyContracts.ViewModels;
using LawCompanyGuarantorApp.Models;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
@ -15,15 +17,151 @@ namespace LawCompanyGuarantorApp.Controllers
public IActionResult Index()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View();
}
public IActionResult Privacy()
public IActionResult Register()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
[HttpPost]
public void Register(string fio, string email, string password)
{
if (string.IsNullOrEmpty(fio) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
{
throw new Exception("Введите фио, почту и пароль");
}
APIClient.PostRequest("api/guarantor/register", new ExecutorBindingModel
{
FIO = fio,
Email = email,
Password = password,
});
Response.Redirect("Enter");
return;
}
public IActionResult Enter()
{
return View();
}
[HttpPost]
public void Enter(string email, string password)
{
if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
{
throw new Exception("Введите email и пароль");
}
APIClient.Guarantor = APIClient.GetRequest<GuarantorViewModel>($"api/guarantor/login?login={email}&password={password}");
if (APIClient.Guarantor == null)
{
throw new Exception("Неверный логин/пароль");
}
Response.Redirect("Index");
}
public IActionResult Privacy()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.Guarantor);
}
[HttpPost]
public void Privacy(string fio, string email, string password)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как сюда попали? Сюда вход только авторизованным");
}
if (string.IsNullOrEmpty(fio) || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password))
{
throw new Exception("Введите фио, почту и пароль");
}
APIClient.PostRequest("api/guarantor/updatedata", new ExecutorBindingModel
{
Id = APIClient.Guarantor.Id,
FIO = fio,
Password = password,
Email = email,
});
APIClient.Guarantor.FIO = fio;
APIClient.Guarantor.Email = email;
APIClient.Guarantor.Password = password;
Response.Redirect("Index");
}
// СТРАНИЦЫ КОНСУЛЬТАЦИЙ
public IActionResult Consultations()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<ConsultationViewModel>>($"api/consultation/GetConsultationList?guarantorId={APIClient.Guarantor.Id}"));
}
// СТРАНИЦА СЛУШАНИЙ
public IActionResult Hearings()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<HearingViewModel>>($"api/hearing/gethearinglist?guarantorId={APIClient.Guarantor.Id}"));
}
// СТРАНИЦА ЮРИСТОВ
public IActionResult Lawyers()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<LawyerViewModel>>($"api/lawyer/getlawyerlist?guarantorId={APIClient.Guarantor.Id}"));
}
public IActionResult ConsultationCase()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Cases = APIClient.GetRequest<List<CaseViewModel>>($"api/case/GetCaseList?executorId={APIClient.Guarantor.Id}");
ViewBag.Consultations = APIClient.GetRequest<List<ConsultationViewModel>>($"api/consultation/getconsultationlist");
return View();
}
[HttpPost]
public void ConsultationCase(int cases, int consultation)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как сюда попали? Сюда вход только авторизованным");
}
var roomElem = APIClient.GetRequest<ConsultationViewModel>($"api/Consultation/GetConsultation?id={consultation}");
APIClient.PostRequest("api/Consultation/UpdateConsultation", new ConsultationBindingModel
{
Id = consultation,
GuarantorId = APIClient.Guarantor.Id,
Cost = roomElem.Cost,
ConsultationDate = roomElem.ConsultationDate,
CaseId = cases
});
Response.Redirect("Visits");
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });

View File

@ -1,12 +1,81 @@
using Microsoft.AspNetCore.Mvc;
using LawCompanyContracts.BindingModels;
using LawCompanyContracts.ViewModels;
using Microsoft.AspNetCore.Mvc;
namespace LawCompanyGuarantorApp.Controllers
{
public class LawyerController : Controller
{
public IActionResult Index()
{
return View();
[HttpGet]
public IActionResult CreateLawyer()
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
return View();
}
[HttpPost]
public void CreateLawyer(string fio, string phone, string email)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
APIClient.PostRequest("api/lawyer/createlawyer", new LawyerBindingModel
{
FIO = fio,
Phone = phone,
Email = email,
GuarantorId = APIClient.Guarantor.Id,
});
Response.Redirect("/Home/Lawyers");
}
[HttpPost]
public void DeleteLawyer(int id)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
APIClient.PostRequest("api/lawyer/deletelawyer", new LawyerBindingModel
{
Id = id
});
Response.Redirect("/Home/Lawyers");
}
[HttpGet]
public IActionResult UpdateLawyer(int id)
{
if (APIClient.Guarantor == null)
{
return Redirect("~/Home/Enter");
}
var lawyer = APIClient.GetRequest<LawyerViewModel>($"api/lawyer/GetLawyerById/{id}");
return View(lawyer);
}
}
[HttpPost]
public void UpdateLawyer(int id, string fio, string email, string phone)
{
if (APIClient.Guarantor == null)
{
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
}
APIClient.PostRequest("api/lawyer/updatelawyer", new LawyerBindingModel
{
Id = id,
FIO = fio,
Email = email,
Phone = phone,
GuarantorId = APIClient.Guarantor.Id,
});
Response.Redirect("/Home/Lawyers");
}
}
}

View File

@ -11,8 +11,10 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LawCompanyBusinessLogic\LawCompanyBusinessLogic.csproj" />
<ProjectReference Include="..\LawCompanyContracts\LawCompanyContracts.csproj" />
<ProjectReference Include="..\LawCompanyDatabaseImplement\LawCompanyDatabaseImplement.csproj" />
<ProjectReference Include="..\LawCompanyDataModels\LawCompanyDataModels.csproj" />
</ItemGroup>
</Project>

View File

@ -1,11 +1,25 @@
using HotelBusinessLogic.BusinessLogics;
using LawCompanyBusinessLogic.BusinessLogics;
using LawCompanyBusinessLogic.OfficePackage.Implements;
using LawCompanyBusinessLogic.OfficePackage;
using LawCompanyContracts.BusinessLogicContracts;
using LawCompanyContracts.StoragesContracts;
using LawCompanyDatabaseImplement.Implements;
using LawCompanyGuarantorApp;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddTransient<IConsultationStorage, ConsultationStorage>();
builder.Services.AddTransient<IReportExecutorLogic, ReportLogicExecutor>();
builder.Services.AddTransient<IReportGuarantorLogic, ReportLogicGuarantor>();
builder.Services.AddTransient<ICaseStorage, CaseStorage>();
builder.Services.AddTransient<IVisitStorage, VisitStorage>();
builder.Services.AddTransient<IClientStorage, ClientStorage>();
builder.Services.AddTransient<IHearingStorage, HearingStorage>();
builder.Services.AddTransient<ILawyerStorage, LawyerStorage>();
builder.Services.AddTransient<IConsultationStorage, ConsultationStorage>();
builder.Services.AddTransient<AbstractSaveToWordExecutor, SaveToWordExecutor>();
builder.Services.AddTransient<AbstractSaveToExcelExecutor, SaveToExcelExecutor>();
builder.Services.AddTransient<AbstractSaveToPdfExecutor, SaveToPdfExecutor>();
// Add services to the container.
builder.Services.AddControllersWithViews();
@ -14,12 +28,11 @@ var app = builder.Build();
APIClient.Connect(builder.Configuration);
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
app.UseHttpsRedirection();
app.UseStaticFiles();
@ -30,6 +43,6 @@ app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=EnterGuarantor}/{id?}");
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

View File

@ -1,6 +1,8 @@
@{
@using LawCompanyContracts.ViewModels;
@using LawCompanyDataModels.Models;
@{
ViewData["Title"] = "Создание консультацию";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
<div class="text-center">
@ -16,13 +18,17 @@
<div class="row">
<div class="col-4">Дата и время</div>
<div class="col-8">
<input type="datetime-local" placeholder="Введите дату" name="consultationDate" id="consultationDate">
<input type="datetime-local" placeholder="Введите дату" name="date" id="date">
</div>
</div>
<div class="row">
<div class="col-4">Дело</div>
<div class="form-group">
<div class="col-8">
<select id="caseId" name="caseId" class="form-control" asp-items="@(new SelectList(@ViewBag.Cases,"Id", "Id"))"></select>
<select name="clientselect" class="form-control" multiple size="6" id="clientselect">
@foreach (var member in ViewBag.Lawyers)
{
<option value="@member.Id">@member.FIO</option>
}
</select>
</div>
</div>
<div class="row">

View File

@ -1,4 +1,8 @@
@{
@using LawCompanyContracts.ViewModels;
@using LawCompanyDataModels.Models;
@{
ViewData["Title"] = "Обновление консультации";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
@ -19,10 +23,14 @@
<input type="text" name="date" id="date" />
</div>
</div>
<div class="row">
<div class="col-4">Дело</div>
<div class="form-group">
<div class="col-8">
<select id="caseId" name="caseId" class="form-control" asp-items="@(new SelectList(@ViewBag.Cases,"Id", "Id"))"></select>
<select name="clientselect" class="form-control" multiple size="6" id="clientselect">
@foreach (var member in ViewBag.Lawyers)
{
<option value="@member.Id">@member.FIO</option>
}
</select>
</div>
</div>
<div class="row">

View File

@ -1,4 +1,7 @@
@{
@using LawCompanyContracts.ViewModels;
@using LawCompanyDataModels.Models;
@{
ViewData["Title"] = "Назначение слушания";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
@ -19,6 +22,16 @@
<input type="text" name="judge" id="judge" />
</div>
</div>
<div class="form-group">
<div class="col-8">
<select name="clientselect" class="form-control" multiple size="6" id="clientselect">
@foreach (var member in ViewBag.Lawyers)
{
<option value="@member.Id">@member.FIO</option>
}
</select>
</div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4">

View File

@ -2,7 +2,6 @@
@model List<LawyerViewModel>
@{
ViewData["Title"] = "Юристы";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
<div class="text-center">
<h1 class="display-4">Юристы</h1>
@ -36,20 +35,16 @@
{
<tr>
<td id="id">
@Html.DisplayFor(modelItem =>
item.Id)
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.FIO)
@Html.DisplayFor(modelItem => item.FIO)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.Email)
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.Phone)
@Html.DisplayFor(modelItem => item.Phone)
</td>
</tr>
}

View File

@ -1,6 +1,8 @@
@{
@using LawCompanyContracts.ViewModels;
@using LawCompanyDataModels.Models;
@{
ViewData["Title"] = "UpdateHearing";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
<div class="text-center">
@ -19,6 +21,16 @@
<input type="text" name="judge" id="judge" />
</div>
</div>
<div class="form-group">
<div class="col-8">
<select name="clientselect" class="form-control" multiple size="6" id="clientselect">
@foreach (var member in ViewBag.Lawyers)
{
<option value="@member.Id">@member.FIO</option>
}
</select>
</div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4">

View File

@ -0,0 +1,22 @@
@using LawCompanyContracts.ViewModels;
@{
ViewData["Title"] = "ConsultationCase";
}
<div class="text-center">
<h2 class="display-4">Связывание консультации и дела</h2>
</div>
<form method="post">
<div class="form-group">
<label for="consultation">Консультация</label>
<select id="consultation" name="consultation" class="form-control" asp-items="@(new SelectList(@ViewBag.Consultations, "Id", "ConsultationDate"))"></select>
</div>
<div class="form-group">
<label for="cases">Визит</label>
<select id="cases" name="cases" class="form-control" asp-items="@(new SelectList(@ViewBag.Cases, "Id", "Name"))"></select>
</div>
<div class="u-container-layout u-container-layout-2">
<input type="submit" value="Сохранить" class="btn btn-primary" />
</div>
</form>

View File

@ -0,0 +1,64 @@
@using LawCompanyContracts.ViewModels
@model List<ConsultationViewModel>
@{
ViewData["Title"] = "Create Consultation";
}
<div class="text-center">
<h1 class="display-4">Список консультаций</h1>
</div>
<div class="text-center">
@{
<p>
<a asp-controller="Consultation" asp-action="CreateConsultation">Назначить консультацию</a>
</p>
<table class="table">
<thead>
<tr>
<th>
Номер
</th>
<th>
Стоимость консультации
</th>
<th>
Дата консультации
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td id="id">
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cost)
</td>
<td>
@Html.DisplayFor(modelItem => item.ConsultationDate)
</td>
<td>
<form action="/Consultation/DeleteConsultation" method="post">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Удалить</button>
</form>
</td>
<td>
<form action="/Consultation/UpdateConsultation">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Изменить</button>
</form>
</td>
<td>
<form action="/Consultation/ConsultationLawyers">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Юристы</button>
</form>
</td>
</tr>
}
</tbody>
</table>
}
</div>

View File

@ -0,0 +1,21 @@
@{
ViewData["Title"] = "Enter";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
<div class="text-center">
<h2 class="display-4">Вход в приложение</h2>
</div>
<form method="post">
<div class="row">
<div class="col-4">Электронная почта:</div>
<div class="col-8"><input type="text" name="email" /></div>
</div>
<div class="row">
<div class="col-4">Пароль:</div>
<div class="col-8"><input type="password" name="password" /></div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4"><input type="submit" value="Вход" class="btn btnprimary" /></div>
</div>
</form>

View File

@ -2,7 +2,6 @@
@model List<HearingViewModel>
@{
ViewData["Title"] = "Create Hearing";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
<div class="text-center">
<h1 class="display-4">Список слушаний</h1>
@ -11,7 +10,6 @@
@{
<p>
<a asp-controller="Hearing" asp-action="CreateHearing">Назначить слушание</a>
<a asp-controller="Hearing" asp-action="AddLawyer">Добавить юристов к слушаниям</a>
</p>
<table class="table">
<thead>
@ -32,25 +30,31 @@
{
<tr>
<td id="id">
@Html.DisplayFor(modelItem =>
item.Id)
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.HearingDate)
@Html.DisplayFor(modelItem => item.HearingDate)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.Judge)
@Html.DisplayFor(modelItem => item.Judge)
</td>
<td>
<button type="submit" class="btn btn-danger">Удалить</button>
<form action="/Hearing/DeleteHearing" method="post">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Удалить</button>
</form>
</td>
<td>
<button type="submit" class="btn btn-danger">Изменить</button>
<form action="/Hearing/UpdateHearing">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Изменить</button>
</form>
</td>
<td>
<button type="submit" class="btn btn-danger">Юристы</button>
<form action="/Hearing/HearingLawyers">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Юристы</button>
</form>
</td>
</tr>
}

View File

@ -39,27 +39,29 @@
{
<tr>
<td id="id">
@Html.DisplayFor(modelItem =>
item.Id)
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.FIO)
@Html.DisplayFor(modelItem => item.FIO)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.Phone)
@Html.DisplayFor(modelItem => item.Phone)
</td>
<td>
@Html.DisplayFor(modelItem =>
item.Email)
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
<button type="submit" class="btn btn-danger">Удалить</button>
</td>
<form action="/Lawyer/DeleteLawyer" method="post">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Удалить</button>
</form>
</td>
<td>
<button type="submit" class="btn btn-danger">Изменить</button>
<form action="/Lawyer/UpdateLawyer">
<input type="hidden" name="id" value="@item.Id" />
<button type="submit" class="btn btn-danger">Изменить</button>
</form>
</td>
</tr>
}

View File

@ -0,0 +1,36 @@
@{
ViewData["Title"] = "Privacy Policy";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
<div class="text-center">
<h2 class="display-4">Личные данные</h2>
</div>
<form method="post">
<div class="row">
<div class="col-4">Электронная почта:</div>
<div class="col-8">
<input type="text" name="email"
value="@Model.Email" />
</div>
</div>
<div class="row">
<div class="col-4">Пароль:</div>
<div class="col-8">
<input type="password" name="password"
value="@Model.Password" />
</div>
</div>
<div class="row">
<div class="col-4">ФИО:</div>
<div class="col-8">
<input type="text" name="fio"
value="@Model.FIO" />
</div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4">
<input type="submit" value="Сохранить" class="btn btn-primary" />
</div>
</div>
</form>

View File

@ -0,0 +1,28 @@
@{
ViewData["Title"] = "Register";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
<div class="text-center">
<h2 class="display-4">Регистрация поручителя</h2>
</div>
<form method="post">
<div class="row">
<div class="col-4">Электронная почта:</div>
<div class="col-8"><input type="text" name="email" /></div>
</div>
<div class="row">
<div class="col-4">Пароль:</div>
<div class="col-8"><input type="password" name="password" /></div>
</div>
<div class="row">
<div class="col-4">ФИО:</div>
<div class="col-8"><input type="text" name="fio" /></div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4">
<input type="submit" value="Регистрация"
class="btn btn-primary" />
</div>
</div>
</form>

View File

@ -16,7 +16,7 @@
<div class="row">
<div class="col-4">Номер телефона</div>
<div class="col-8">
<input type="number" id="phone" name="phone" />
<input type="text" id="phone" name="phone" />
</div>
</div>
<div class="row">

View File

@ -1,4 +1,7 @@
@{
@using LawCompanyContracts.ViewModels
@model LawyerViewModel
@{
ViewData["Title"] = "Обновить юриста";
Layout = "~/Views/Shared/_LayoutGuarantor.cshtml";
}
@ -6,29 +9,31 @@
<div class="text-center">
<h2 class="display-4">Изменение юриста</h2>
</div>
<form method="post">
<div class="row">
<div class="col-4">ФИО</div>
<div class="col-8">
<input type="text" name="fio" id="fio" />
</div>
</div>
<div class="row">
<div class="col-4">Номер телефона</div>
<div class="col-8">
<input type="number" id="phone" name="phone" />
</div>
</div>
<div class="row">
<div class="col-4">E-mail</div>
<div class="col-8">
<input type="text" name="email" id="email" />
</div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4">
<input type="submit" value="Обновить" class="btn btn-primary" />
</div>
</div>
<form asp-action="UpdateLawyer" method="post">
<input type="hidden" name="id" value="@Model.Id" />
<div class="row">
<div class="col-4">ФИО</div>
<div class="col-8">
<input type="text" name="fio" id="fio" value="@Model.FIO" />
</div>
</div>
<div class="row">
<div class="col-4">Номер телефона</div>
<div class="col-8">
<input type="text" id="phone" name="phone" value="@Model.Phone" />
</div>
</div>
<div class="row">
<div class="col-4">E-mail</div>
<div class="col-8">
<input type="text" name="email" id="email" value="@Model.Email" />
</div>
</div>
<div class="row">
<div class="col-8"></div>
<div class="col-4">
<input type="submit" value="Обновить" class="btn btn-primary" />
</div>
</div>
</form>

View File

@ -20,25 +20,26 @@
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Lawyers">Home</a>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Lawyers">Юристы</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asparea="" asp-controller="Home" asp-action="Lawyers">Юристы</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asparea="" asp-controller="Home" asp-action="Hearings">Слушания</a>
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Hearings">Слушания</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Consultations">Консультации</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asparea="" asp-controller="Home" asp-action="PrivacyGuarantor">Личные данные</a>
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="ConsultationCase">Связывание</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asparea="" asp-controller="Home" asp-action="RegisterGuarantor">Регистрация</a>
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Личные данные</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="EnterGuarantor">Вход</a>
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Register">Регистрация</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Enter">Вход</a>
</li>
</ul>
</div>

View File

@ -23,6 +23,7 @@ namespace LawCompanyRestApi.Controllers
_lawyerlogic = lawyerLogic;
}
[HttpGet]
public List<ConsultationViewModel>? GetConsultationList(int guarantorId)
{
@ -40,6 +41,21 @@ namespace LawCompanyRestApi.Controllers
}
}
[HttpGet("{id}")]
public ConsultationViewModel? GetConsultation(int id)
{
try
{
return _logic.ReadElement(new ConsultationSearchModel { Id = id, });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка продуктов");
throw;
}
}
[HttpPost]
public void CreateConsultation(ConsultationBindingModel model)
{

View File

@ -16,8 +16,7 @@ namespace LawCompanyRestApi.Controllers
private readonly IHearingLogic _logic;
private readonly ILawyerLogic _lawyerlogic;
public HearingController(IHearingLogic logic, ILogger<HearingController>
logger, ILawyerLogic lawyerlogic)
public HearingController(IHearingLogic logic, ILogger<HearingController> logger, ILawyerLogic lawyerlogic)
{
_logger = logger;
_logic = logic;

View File

@ -34,6 +34,20 @@ namespace LawCompanyRestApi.Controllers
}
}
[HttpGet("{id}")]
public LawyerViewModel? GetLawyerById(int id)
{
try
{
return _logic.ReadElement(new LawyerSearchModel { Id = id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения данных клиента");
throw;
}
}
[HttpPost]
public void CreateLawyer(LawyerBindingModel model)
{

View File

@ -11,6 +11,6 @@
"SmtpClientPort": "587",
"PopHost": "pop.gmail.com",
"PopPort": "995",
"MailLogin": "lab7yakobchuk@gmail.com",
"MailPassword": "scht ahjt fxmx tdpc"
"MailLogin": "laba46466@gmail.com",
"MailPassword": "iyin rgai wjdh ocmi"
}