создано рест апи
This commit is contained in:
parent
50b76d845f
commit
f2e10c6085
25
RDBMS_lab4.sln
Normal file
25
RDBMS_lab4.sln
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.9.34728.123
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RDBMS_lab4", "RDBMS_lab4\RDBMS_lab4.csproj", "{B2AF25A1-69D5-4F49-8DBB-366D9E292A32}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{B2AF25A1-69D5-4F49-8DBB-366D9E292A32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{B2AF25A1-69D5-4F49-8DBB-366D9E292A32}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{B2AF25A1-69D5-4F49-8DBB-366D9E292A32}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{B2AF25A1-69D5-4F49-8DBB-366D9E292A32}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {7D86C303-8013-479C-86FC-CF7AB9270293}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
108
RDBMS_lab4/Controllers/BuyersController.cs
Normal file
108
RDBMS_lab4/Controllers/BuyersController.cs
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using RDBMS_lab4.ViewModels;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Controllers
|
||||||
|
{
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class BuyersController : Controller
|
||||||
|
{
|
||||||
|
public BuyersController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("get")]
|
||||||
|
public IActionResult get()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Buyers.Select(b => new BuyerViue(b)).ToList();
|
||||||
|
return Ok(res);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpGet("get/{Id}")]
|
||||||
|
public IActionResult get([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Buyers.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return Ok(null);
|
||||||
|
}
|
||||||
|
return Ok(new BuyerViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPost("create")]
|
||||||
|
public IActionResult create([FromBody] BuyerViue buyer)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Buyers.Add(new() {
|
||||||
|
Name = buyer.Name,
|
||||||
|
Telephon = buyer.Telephon
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new BuyerViue(res.Entity));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPut("update")]
|
||||||
|
public IActionResult update([FromBody] BuyerViue buyer)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Buyers.FirstOrDefault(b => b.Id == buyer.Id);
|
||||||
|
res.Telephon = buyer.Telephon;
|
||||||
|
res.Name = buyer.Name;
|
||||||
|
context.SaveChanges();
|
||||||
|
return Ok(new BuyerViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpDelete("delete/{Id}")]
|
||||||
|
public IActionResult delete([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Buyers.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res != null)
|
||||||
|
{
|
||||||
|
context.Buyers.Remove(res);
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest( new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new BuyerViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
111
RDBMS_lab4/Controllers/PostsController.cs
Normal file
111
RDBMS_lab4/Controllers/PostsController.cs
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using RDBMS_lab4.Models;
|
||||||
|
using RDBMS_lab4.ViewModels;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Controllers
|
||||||
|
{
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class PostsController : Controller
|
||||||
|
{
|
||||||
|
public PostsController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("get")]
|
||||||
|
public IActionResult get()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Posts.Include(p => p.Services).Select(p => new PostViue(p)).ToList();
|
||||||
|
return Ok(res);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpGet("get/{Id}")]
|
||||||
|
public IActionResult get([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Posts.Include(p => p.Services).FirstOrDefault(p => p.Id == Id);
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return Ok(null);
|
||||||
|
}
|
||||||
|
return Ok(new PostViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPost("create")]
|
||||||
|
public IActionResult create([FromBody] PostViue post)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Posts.Add(new()
|
||||||
|
{
|
||||||
|
Name = post.Name,
|
||||||
|
Services = context.Services.Where(s => post.Services.Contains(s.Id)).ToList()
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new PostViue(res.Entity));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPut("update")]
|
||||||
|
public IActionResult update([FromBody] PostViue post)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Posts.Include(p => p.Services).FirstOrDefault(p => p.Id == post.Id);
|
||||||
|
res.Name = post.Name;
|
||||||
|
res.Services = context.Services.Where(s => post.Services.Contains(s.Id)).ToList();
|
||||||
|
context.SaveChanges();
|
||||||
|
return Ok(new PostViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpDelete("delete/{Id}")]
|
||||||
|
public IActionResult delete([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Posts.FirstOrDefault(p => p.Id == Id);
|
||||||
|
if (res != null)
|
||||||
|
{
|
||||||
|
context.Posts.Remove(res);
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new PostViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
112
RDBMS_lab4/Controllers/ServicesController.cs
Normal file
112
RDBMS_lab4/Controllers/ServicesController.cs
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using RDBMS_lab4.Models;
|
||||||
|
using RDBMS_lab4.ViewModels;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Controllers
|
||||||
|
{
|
||||||
|
public class ServicesController : Controller
|
||||||
|
{
|
||||||
|
public ServicesController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("get")]
|
||||||
|
public IActionResult get()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Services.Select(b => new ServiceViue(b)).ToList();
|
||||||
|
return Ok(res);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpGet("get/{Id}")]
|
||||||
|
public IActionResult get([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Services.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return Ok(null);
|
||||||
|
}
|
||||||
|
return Ok(new ServiceViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPost("create")]
|
||||||
|
public IActionResult create([FromBody] ServiceViue service)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Services.Add(new()
|
||||||
|
{
|
||||||
|
Name = service.Name,
|
||||||
|
Price = (decimal)service.Price,
|
||||||
|
Duration = new TimeSpan(service.Duration)
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new ServiceViue(res.Entity));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPut("update")]
|
||||||
|
public IActionResult update([FromBody] ServiceViue service)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Services.FirstOrDefault(b => b.Id == service.Id);
|
||||||
|
res.Name = service.Name;
|
||||||
|
res.Price = (decimal)service.Price;
|
||||||
|
res.Duration = new TimeSpan(service.Duration);
|
||||||
|
context.SaveChanges();
|
||||||
|
return Ok(new ServiceViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpDelete("delete/{Id}")]
|
||||||
|
public IActionResult delete([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Services.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res != null)
|
||||||
|
{
|
||||||
|
context.Services.Remove(res);
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new ServiceViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
115
RDBMS_lab4/Controllers/TimetablesController.cs
Normal file
115
RDBMS_lab4/Controllers/TimetablesController.cs
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using RDBMS_lab4.Models;
|
||||||
|
using RDBMS_lab4.ViewModels;
|
||||||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Controllers
|
||||||
|
{
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class TimetablesController : Controller
|
||||||
|
{
|
||||||
|
public TimetablesController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("get")]
|
||||||
|
public IActionResult get()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Timetables.Select(b => new TimetableViue(b)).ToList();
|
||||||
|
return Ok(res);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpGet("get/{Id}")]
|
||||||
|
public IActionResult get([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Timetables.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return Ok(null);
|
||||||
|
}
|
||||||
|
return Ok(new TimetableViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPost("create")]
|
||||||
|
public IActionResult create([FromBody] TimetableViue timetable)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Timetables.Add(new()
|
||||||
|
{
|
||||||
|
Date = (DateTime)timetable.Date,
|
||||||
|
Buyerid = (int)(timetable.Buyerid),
|
||||||
|
Serviceid = (int)(timetable.Serviceid),
|
||||||
|
Workerid = (int)(timetable.Workerid)
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new TimetableViue(res.Entity));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPut("update")]
|
||||||
|
public IActionResult update([FromBody] TimetableViue timetable)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Timetables.FirstOrDefault(b => b.Id == timetable.Id);
|
||||||
|
res.Date = (DateTime)timetable.Date;
|
||||||
|
res.Buyerid = (int)(timetable.Buyerid);
|
||||||
|
res.Serviceid = (int)(timetable.Serviceid);
|
||||||
|
res.Workerid = (int)(timetable.Workerid);
|
||||||
|
context.SaveChanges();
|
||||||
|
return Ok(new TimetableViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpDelete("delete/{Id}")]
|
||||||
|
public IActionResult delete([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Timetables.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res != null)
|
||||||
|
{
|
||||||
|
context.Timetables.Remove(res);
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new TimetableViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
110
RDBMS_lab4/Controllers/WorkersController.cs
Normal file
110
RDBMS_lab4/Controllers/WorkersController.cs
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using RDBMS_lab4.Models;
|
||||||
|
using RDBMS_lab4.ViewModels;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Controllers
|
||||||
|
{
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class WorkersController : Controller
|
||||||
|
{
|
||||||
|
public WorkersController()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("get")]
|
||||||
|
public IActionResult get()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Workers.Select(b => new WorkerViue(b)).ToList();
|
||||||
|
return Ok(res);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpGet("get/{Id}")]
|
||||||
|
public IActionResult get([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Workers.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return Ok(null);
|
||||||
|
}
|
||||||
|
return Ok(new WorkerViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPost("create")]
|
||||||
|
public IActionResult create([FromBody] WorkerViue worker)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Workers.Add(new()
|
||||||
|
{
|
||||||
|
Name = worker.Name,
|
||||||
|
Postid = (int)worker.Postid
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new WorkerViue(res.Entity));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpPut("update")]
|
||||||
|
public IActionResult update([FromBody] WorkerViue worker)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Workers.FirstOrDefault(b => b.Id == worker.Id);
|
||||||
|
res.Postid = (int)worker.Postid;
|
||||||
|
res.Name = worker.Name;
|
||||||
|
context.SaveChanges();
|
||||||
|
return Ok(new WorkerViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[HttpDelete("delete/{Id}")]
|
||||||
|
public IActionResult delete([FromRoute] int Id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var context = new beautySalonContext();
|
||||||
|
var res = context.Workers.FirstOrDefault(b => b.Id == Id);
|
||||||
|
if (res != null)
|
||||||
|
{
|
||||||
|
context.Workers.Remove(res);
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
if (res == null)
|
||||||
|
{
|
||||||
|
return BadRequest(new NullReferenceException());
|
||||||
|
}
|
||||||
|
return Ok(new WorkerViue(res));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return BadRequest(ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
31
RDBMS_lab4/Models/Buyer.cs
Normal file
31
RDBMS_lab4/Models/Buyer.cs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||||
|
#nullable disable
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Таблица клиентов
|
||||||
|
/// </summary>
|
||||||
|
[Table("buyers")]
|
||||||
|
public partial class Buyer
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("telephon")]
|
||||||
|
public string Telephon { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty("Buyer")]
|
||||||
|
public virtual Timetable Timetable { get; set; }
|
||||||
|
}
|
32
RDBMS_lab4/Models/Post.cs
Normal file
32
RDBMS_lab4/Models/Post.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||||
|
#nullable disable
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Таблица с должностями работников
|
||||||
|
/// </summary>
|
||||||
|
[Table("posts")]
|
||||||
|
[Index("Name", Name = "posts_name_name1_key", IsUnique = true)]
|
||||||
|
public partial class Post
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty("Post")]
|
||||||
|
public virtual ICollection<Worker> Workers { get; set; } = new List<Worker>();
|
||||||
|
|
||||||
|
[ForeignKey("Postid")]
|
||||||
|
[InverseProperty("Posts")]
|
||||||
|
public virtual ICollection<Service> Services { get; set; } = new List<Service>();
|
||||||
|
}
|
38
RDBMS_lab4/Models/Service.cs
Normal file
38
RDBMS_lab4/Models/Service.cs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||||
|
#nullable disable
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Таблица услуг
|
||||||
|
/// </summary>
|
||||||
|
[Table("services")]
|
||||||
|
[Index("Name", Name = "services_name_name1_key", IsUnique = true)]
|
||||||
|
public partial class Service
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Column("price")]
|
||||||
|
public decimal Price { get; set; }
|
||||||
|
|
||||||
|
[Column("duration")]
|
||||||
|
public TimeSpan Duration { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty("Service")]
|
||||||
|
public virtual ICollection<Timetable> Timetables { get; set; } = new List<Timetable>();
|
||||||
|
|
||||||
|
[ForeignKey("Serviceid")]
|
||||||
|
[InverseProperty("Services")]
|
||||||
|
public virtual ICollection<Post> Posts { get; set; } = new List<Post>();
|
||||||
|
}
|
48
RDBMS_lab4/Models/Timetable.cs
Normal file
48
RDBMS_lab4/Models/Timetable.cs
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||||
|
#nullable disable
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Таблица расписания, содержит ссылки на клиента, услугу и работника
|
||||||
|
/// </summary>
|
||||||
|
[Table("timetable")]
|
||||||
|
[Index("Buyerid", Name = "fki_timetable_buyerid_fkey")]
|
||||||
|
[Index("Serviceid", Name = "fki_timetable_serviceid_fkey")]
|
||||||
|
[Index("Workerid", Name = "fki_timetable_workerid_fkey")]
|
||||||
|
[Index("Date", "Serviceid", Name = "timetable_date_serviceid_key", IsUnique = true)]
|
||||||
|
public partial class Timetable
|
||||||
|
{
|
||||||
|
[Column("id")]
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
[Column("date", TypeName = "timestamp without time zone")]
|
||||||
|
public DateTime Date { get; set; }
|
||||||
|
|
||||||
|
[Key]
|
||||||
|
[Column("buyerid")]
|
||||||
|
public int Buyerid { get; set; }
|
||||||
|
|
||||||
|
[Column("serviceid")]
|
||||||
|
public int Serviceid { get; set; }
|
||||||
|
|
||||||
|
[Column("workerid")]
|
||||||
|
public int Workerid { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey("Buyerid")]
|
||||||
|
[InverseProperty("Timetable")]
|
||||||
|
public virtual Buyer Buyer { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey("Serviceid")]
|
||||||
|
[InverseProperty("Timetables")]
|
||||||
|
public virtual Service Service { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey("Workerid")]
|
||||||
|
[InverseProperty("Timetables")]
|
||||||
|
public virtual Worker Worker { get; set; }
|
||||||
|
}
|
35
RDBMS_lab4/Models/Worker.cs
Normal file
35
RDBMS_lab4/Models/Worker.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||||
|
#nullable disable
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Таблица работников, содержит ссылку на должность
|
||||||
|
/// </summary>
|
||||||
|
[Table("workers")]
|
||||||
|
[Index("Postid", Name = "fki_workers_postid_fkey")]
|
||||||
|
public partial class Worker
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Column("postid")]
|
||||||
|
public int Postid { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("name")]
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey("Postid")]
|
||||||
|
[InverseProperty("Workers")]
|
||||||
|
public virtual Post Post { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty("Worker")]
|
||||||
|
public virtual ICollection<Timetable> Timetables { get; set; } = new List<Timetable>();
|
||||||
|
}
|
21
RDBMS_lab4/Program.cs
Normal file
21
RDBMS_lab4/Program.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
// Add services to the container.
|
||||||
|
|
||||||
|
builder.Services.AddControllers();
|
||||||
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||||
|
builder.Services.AddEndpointsApiExplorer();
|
||||||
|
builder.Services.AddSwaggerGen();
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
// Configure the HTTP request pipeline.
|
||||||
|
app.UseSwagger();
|
||||||
|
app.UseSwaggerUI();
|
||||||
|
|
||||||
|
|
||||||
|
app.UseAuthorization();
|
||||||
|
|
||||||
|
app.MapControllers();
|
||||||
|
|
||||||
|
app.Run();
|
31
RDBMS_lab4/Properties/launchSettings.json
Normal file
31
RDBMS_lab4/Properties/launchSettings.json
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||||
|
"iisSettings": {
|
||||||
|
"windowsAuthentication": false,
|
||||||
|
"anonymousAuthentication": true,
|
||||||
|
"iisExpress": {
|
||||||
|
"applicationUrl": "http://localhost:55760",
|
||||||
|
"sslPort": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"http": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "swagger",
|
||||||
|
"applicationUrl": "http://localhost:5198",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"IIS Express": {
|
||||||
|
"commandName": "IISExpress",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "swagger",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
RDBMS_lab4/RDBMS_lab4 - Backup.csproj
Normal file
19
RDBMS_lab4/RDBMS_lab4 - Backup.csproj
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.4">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.11" />
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
25
RDBMS_lab4/RDBMS_lab4.csproj
Normal file
25
RDBMS_lab4/RDBMS_lab4.csproj
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="efpt.config.json.user" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.4">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.2" />
|
||||||
|
<PackageReference Include="Npgsql" Version="8.0.3" />
|
||||||
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" />
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
6
RDBMS_lab4/RDBMS_lab4.http
Normal file
6
RDBMS_lab4/RDBMS_lab4.http
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@RDBMS_lab4_HostAddress = http://localhost:5198
|
||||||
|
|
||||||
|
GET {{RDBMS_lab4_HostAddress}}/weatherforecast/
|
||||||
|
Accept: application/json
|
||||||
|
|
||||||
|
###
|
19
RDBMS_lab4/ViewModels/BuyerViue.cs
Normal file
19
RDBMS_lab4/ViewModels/BuyerViue.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
using RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.ViewModels;
|
||||||
|
|
||||||
|
public class BuyerViue
|
||||||
|
{
|
||||||
|
public BuyerViue() { }
|
||||||
|
public BuyerViue(Buyer buyer)
|
||||||
|
{
|
||||||
|
Id = buyer.Id;
|
||||||
|
Name = buyer.Name;
|
||||||
|
Telephon = buyer.Telephon;
|
||||||
|
}
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
public string? Telephon { get; set; }
|
||||||
|
|
||||||
|
public string? Name { get; set; }
|
||||||
|
}
|
19
RDBMS_lab4/ViewModels/PostViue.cs
Normal file
19
RDBMS_lab4/ViewModels/PostViue.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
using RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.ViewModels;
|
||||||
|
|
||||||
|
public class PostViue
|
||||||
|
{
|
||||||
|
public PostViue() { }
|
||||||
|
public PostViue(Post post)
|
||||||
|
{
|
||||||
|
Id = post.Id;
|
||||||
|
Name = post.Name;
|
||||||
|
Services = post.Services.Select(s => s.Id).ToList();
|
||||||
|
}
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
public string? Name { get; set; }
|
||||||
|
|
||||||
|
public List<int> Services { get; set; }
|
||||||
|
}
|
21
RDBMS_lab4/ViewModels/ServiceViue.cs
Normal file
21
RDBMS_lab4/ViewModels/ServiceViue.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.ViewModels;
|
||||||
|
public class ServiceViue
|
||||||
|
{
|
||||||
|
public ServiceViue() { }
|
||||||
|
public ServiceViue(Service service)
|
||||||
|
{
|
||||||
|
Id = service.Id;
|
||||||
|
Price = service.Price;
|
||||||
|
Duration = service.Duration.Ticks;
|
||||||
|
Name = service.Name;
|
||||||
|
}
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
public decimal? Price { get; set; }
|
||||||
|
|
||||||
|
public long Duration { get; set; }
|
||||||
|
|
||||||
|
public string? Name { get; set; }
|
||||||
|
}
|
24
RDBMS_lab4/ViewModels/TimetableViue.cs
Normal file
24
RDBMS_lab4/ViewModels/TimetableViue.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.ViewModels;
|
||||||
|
public class TimetableViue
|
||||||
|
{
|
||||||
|
public TimetableViue() { }
|
||||||
|
public TimetableViue(Timetable timetable)
|
||||||
|
{
|
||||||
|
Id = timetable.Id;
|
||||||
|
Date = timetable.Date;
|
||||||
|
Buyerid = timetable.Buyerid;
|
||||||
|
Serviceid = timetable.Serviceid;
|
||||||
|
Workerid = timetable.Workerid;
|
||||||
|
}
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
public DateTime? Date { get; set; }
|
||||||
|
|
||||||
|
public int? Buyerid { get; set; }
|
||||||
|
|
||||||
|
public int? Serviceid { get; set; }
|
||||||
|
|
||||||
|
public int? Workerid { get; set; }
|
||||||
|
}
|
18
RDBMS_lab4/ViewModels/WorkerViue.cs
Normal file
18
RDBMS_lab4/ViewModels/WorkerViue.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4.ViewModels;
|
||||||
|
public class WorkerViue
|
||||||
|
{
|
||||||
|
public WorkerViue() { }
|
||||||
|
public WorkerViue(Worker worker)
|
||||||
|
{
|
||||||
|
Id = worker.Id;
|
||||||
|
Postid = worker.Postid;
|
||||||
|
Name = worker.Name;
|
||||||
|
}
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
public int? Postid { get; set; }
|
||||||
|
|
||||||
|
public string? Name { get; set; }
|
||||||
|
}
|
8
RDBMS_lab4/appsettings.Development.json
Normal file
8
RDBMS_lab4/appsettings.Development.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
9
RDBMS_lab4/appsettings.json
Normal file
9
RDBMS_lab4/appsettings.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
119
RDBMS_lab4/beautySalonContext.cs
Normal file
119
RDBMS_lab4/beautySalonContext.cs
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
// <auto-generated> This file has been auto generated by EF Core Power Tools. </auto-generated>
|
||||||
|
#nullable disable
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using RDBMS_lab4.Models;
|
||||||
|
|
||||||
|
namespace RDBMS_lab4;
|
||||||
|
|
||||||
|
public partial class beautySalonContext : DbContext
|
||||||
|
{
|
||||||
|
public beautySalonContext()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public beautySalonContext(DbContextOptions<beautySalonContext> options)
|
||||||
|
: base(options)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual DbSet<Buyer> Buyers { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Post> Posts { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Service> Services { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Timetable> Timetables { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Worker> Workers { get; set; }
|
||||||
|
|
||||||
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
|
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.
|
||||||
|
{
|
||||||
|
optionsBuilder.UseNpgsql("Host=192.168.1.70;Database=beautySalon;Username=windows;Password=windows");
|
||||||
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
||||||
|
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
modelBuilder.Entity<Buyer>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("buyer_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("buyers", tb => tb.HasComment("Таблица клиентов"));
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasDefaultValueSql("nextval('buyer_id_seq'::regclass)");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Post>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("Post_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("posts", tb => tb.HasComment("Таблица с должностями работников"));
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasDefaultValueSql("nextval('post_id_seq'::regclass)");
|
||||||
|
|
||||||
|
entity.HasMany(d => d.Services).WithMany(p => p.Posts)
|
||||||
|
.UsingEntity<Dictionary<string, object>>(
|
||||||
|
"PostService",
|
||||||
|
r => r.HasOne<Service>().WithMany()
|
||||||
|
.HasForeignKey("Serviceid")
|
||||||
|
.HasConstraintName("post_service_serviceid_fkey"),
|
||||||
|
l => l.HasOne<Post>().WithMany()
|
||||||
|
.HasForeignKey("Postid")
|
||||||
|
.HasConstraintName("post_service_postid_fkey"),
|
||||||
|
j =>
|
||||||
|
{
|
||||||
|
j.HasKey("Postid", "Serviceid").HasName("post_service_pkey");
|
||||||
|
j.ToTable("post_service", tb => tb.HasComment("Связь должностей и услуг"));
|
||||||
|
j.HasIndex(new[] { "Postid" }, "fki_post_service_postid_fkey");
|
||||||
|
j.HasIndex(new[] { "Serviceid" }, "fki_post_service_serviceid_fkey");
|
||||||
|
j.IndexerProperty<int>("Postid").HasColumnName("postid");
|
||||||
|
j.IndexerProperty<int>("Serviceid").HasColumnName("serviceid");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Service>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("service_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("services", tb => tb.HasComment("Таблица услуг"));
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasDefaultValueSql("nextval('service_id_seq'::regclass)");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Timetable>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Buyerid).HasName("timetable_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("timetable", tb => tb.HasComment("Таблица расписания, содержит ссылки на клиента, услугу и работника"));
|
||||||
|
|
||||||
|
entity.Property(e => e.Buyerid).ValueGeneratedNever();
|
||||||
|
entity.Property(e => e.Date).HasDefaultValueSql("CURRENT_DATE");
|
||||||
|
entity.Property(e => e.Id).ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Buyer).WithOne(p => p.Timetable).HasConstraintName("timetable_buyerid_fkey");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Service).WithMany(p => p.Timetables).HasConstraintName("timetable_serviceid_fkey");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Worker).WithMany(p => p.Timetables).HasConstraintName("timetable_workerid_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Worker>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasKey(e => e.Id).HasName("workers_pkey");
|
||||||
|
|
||||||
|
entity.ToTable("workers", tb => tb.HasComment("Таблица работников, содержит ссылку на должность"));
|
||||||
|
|
||||||
|
entity.Property(e => e.Id).HasDefaultValueSql("nextval('worker_id_seq'::regclass)");
|
||||||
|
|
||||||
|
entity.HasOne(d => d.Post).WithMany(p => p.Workers).HasConstraintName("workers_postid_fkey");
|
||||||
|
});
|
||||||
|
|
||||||
|
OnModelCreatingPartial(modelBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
|
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
|
||||||
|
}
|
66
RDBMS_lab4/efpt.config.json
Normal file
66
RDBMS_lab4/efpt.config.json
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
{
|
||||||
|
"CodeGenerationMode": 3,
|
||||||
|
"ContextClassName": "beautySalonContext",
|
||||||
|
"ContextNamespace": null,
|
||||||
|
"FilterSchemas": false,
|
||||||
|
"IncludeConnectionString": true,
|
||||||
|
"ModelNamespace": null,
|
||||||
|
"OutputContextPath": null,
|
||||||
|
"OutputPath": "Models",
|
||||||
|
"PreserveCasingWithRegex": true,
|
||||||
|
"ProjectRootNamespace": "RDBMS_lab4",
|
||||||
|
"Schemas": null,
|
||||||
|
"SelectedHandlebarsLanguage": 3,
|
||||||
|
"SelectedToBeGenerated": 0,
|
||||||
|
"T4TemplatePath": null,
|
||||||
|
"Tables": [
|
||||||
|
{
|
||||||
|
"Name": "public.buyers",
|
||||||
|
"ObjectType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "public.post_service",
|
||||||
|
"ObjectType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "public.posts",
|
||||||
|
"ObjectType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "public.services",
|
||||||
|
"ObjectType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "public.timetable",
|
||||||
|
"ObjectType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "public.workers",
|
||||||
|
"ObjectType": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"UiHint": null,
|
||||||
|
"UncountableWords": null,
|
||||||
|
"UseAsyncStoredProcedureCalls": true,
|
||||||
|
"UseBoolPropertiesWithoutDefaultSql": false,
|
||||||
|
"UseDatabaseNames": false,
|
||||||
|
"UseDateOnlyTimeOnly": false,
|
||||||
|
"UseDbContextSplitting": false,
|
||||||
|
"UseDecimalDataAnnotationForSprocResult": true,
|
||||||
|
"UseFluentApiOnly": false,
|
||||||
|
"UseHandleBars": false,
|
||||||
|
"UseHierarchyId": false,
|
||||||
|
"UseInflector": true,
|
||||||
|
"UseLegacyPluralizer": false,
|
||||||
|
"UseManyToManyEntity": false,
|
||||||
|
"UseNoDefaultConstructor": false,
|
||||||
|
"UseNoNavigations": false,
|
||||||
|
"UseNoObjectFilter": false,
|
||||||
|
"UseNodaTime": false,
|
||||||
|
"UseNullableReferences": false,
|
||||||
|
"UsePrefixNavigationNaming": false,
|
||||||
|
"UseSchemaFolders": false,
|
||||||
|
"UseSchemaNamespaces": false,
|
||||||
|
"UseSpatial": false,
|
||||||
|
"UseT4": false
|
||||||
|
}
|
5
RDBMS_lab4/libman.json
Normal file
5
RDBMS_lab4/libman.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"version": "1.0",
|
||||||
|
"defaultProvider": "cdnjs",
|
||||||
|
"libraries": []
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user