Проектирование модели данных
Класс EFUsersRepository содержит обьекты для доступа к данным приложения, предназначен для описания механизма хранения данных о пользователе. Методы класса: Таким образом приложение получится хорошо структурированным и понятным. Каждый проект отвечает за конкретную функциональную область приложения. Метод MembershipUser GetMembershipUserByName (string userName) — предназначен для инициализации… Читать ещё >
Проектирование модели данных (реферат, курсовая, диплом, контрольная)
Выделение сущностей и атрибутов
Для предметной области «Предоставление транспортных услуг» я выделил следующие сущности:
Автомобиль (Vehicle) — сущность, содержащая все автомобили, на которых будут осуществляться грузоперевозки.
Груз (Admin) — сущность, содержащая всех диспетчеров, которыебудут работать.
Маршруты (Order) — сущность, содержащая все заказы, по которым будут осуществляться грузоперевозки.
Пользователь (Driver) — сущность, содержащая всех водителей, которые будут осуществлять грузоперевозки.
ER-модель используется при высокоуровневом (концептуальном) проектировании баз данных. С её помощью можно выделить ключевые сущности и обозначить связи, которые могут устанавливаться между этими сущностями.
Во время проектирования баз данных происходит преобразование ER-модели в конкретную схему базы данных на основе выбранной модели данных (реляционной, объектной, сетевой или др.).
ER-модель представляет собой формальную конструкцию, которая сама по себе не предписывает никаких графических средств её визуализации. В качестве стандартной графической нотации, с помощью которой можно визуализировать ER-модель, была предложена диаграмма сущность-связь (ER-диаграмма).
На рисунке 2.11 показана ER-модель предметной области.
Рисунок 2.11 — ER-модель предметной области.
Построение логической модели данных
На рисунке 2.12 изображена логическая модель базы данных Web-приложения предоставление транспортных услуг.
Рисунок 2.12 — Логическая модель данных Web-приложения предоставление транспортных услуг.
Описание таблиц и полей
В таблицах 2.3 — 2.6 приведены описания таблиц и полей базы данных управление грузоперевозками.
Таблица 2.3 — Таблица Автомобиль «Vehicle».
Название поля. | Тип. | Ограничение. | Примечания. | |
IdVehicle. | Integer. | PK. | Id транспортного средства. | |
Mark. | Varchar (50). | Марка. | ||
Model. | Varchar (50). | Модель. | ||
TypeofVehicle. | Varchar (50). | Тип автомобиля. | ||
Capacity. | Float. | Грузоподъемность. | ||
Area. | Float. | Площадь платформы. | ||
Size. | Float. | Объем платформы. | ||
Таблица 2.4 — Таблица «Диспетчер» (Admin).
Название поля. | Тип. | Ограничение. | Примечания. | |
IdAdmin. | Integer. | PK. | Id диспетчера. | |
Email. | Varchar (50). | Емейл. | ||
Name. | Varchar (50). | Имя. | ||
Surname. | Varchar (70). | Фамилия. | ||
MiddleName. | Varchar (50). | Отчество. | ||
Phone. | Integer. | Телефон. | ||
PhotoURL. | Varchar (50). | Адрес фотографии. | ||
Password. | Varchar (50). | Пароль. | ||
Таблица 2.5 — Таблица «Заказ» (Order).
Название поля. | Тип. | Ограничение. | Примечания. | |
IdOrder. | Integer. | PK. | Id заказа. | |
Name. | Varchar (50). | Название заказа. | ||
Email. | Varchar (50). | Водитель. | ||
Date. | Data. | Дата маршрута. | ||
PointA. | Varchar (500). | Точка отправления. | ||
PointB. | Varchar (500). | Точка доставки. | ||
Client. | Date. | Заказчик. | ||
Number. | Integer. | Номер заказчика. | ||
IdVehicle. | Integer. | FK. | Id транспортного средства. | |
IdDriver. | Integer. | FK. | Id водителя. | |
Построение физической модели данных
На рисунке 2.13 изображения физическая модель базы данных Web-приложения предоставление транспортных услуг.
Рисунок 2.13 — Физическая модель базы данных Web-приложения предоставление транспортных услуг.
Разработка SQL-скриптов для реализации таблиц баз данных
SQL-скрипт для создания таблицы «Пользователи»:
CREATE TABLE [dbo]. Driver] (.
[Name] NVARCHAR (50) NOT NULL,.
[Surname] NVARCHAR (50) NOT NULL,.
[Middle_name] NVARCHAR (50) NULL,.
[Email] NVARCHAR (100) NOT NULL,.
[Phone] NVARCHAR (30) NULL,.
[IsAdmin] BIT DEFAULT ((0)) NOT NULL,.
[PhotoURL] NVARCHAR (100) NULL,.
[Password] NVARCHAR (50) NOT NULL,.
[DrivingExpirience] FLOAT (53) NULL,.
[RightsCategory] NVARCHAR (50) NULL,.
PRIMARY KEY CLUSTERED ([Email] ASC).
); приложение автоматизация программный скрипт.
SQL-скрипт для создания таблицы «Автомобили»:
CREATE TABLE [dbo]. Vehicles] (.
[IdVehicle] INT NOT NULL,.
[Mark] NVARCHAR (50) NULL,.
[Model] NVARCHAR (50) NULL,.
[TypeofVehicle] NVARCHAR (50) NULL,.
[Capacity] FLOAT (53) NULL,.
[Area] FLOAT (53) NULL,.
[Size] FLOAT (53) NULL,.
PRIMARY KEY CLUSTERED ([IdVehicle] ASC).
);
SQL-скрипт для создания таблицы «Диспетчер»:
CREATE TABLE [dbo]. Admin] (.
[IdProduct] INT NOT NULL,.
[Name] NVARCHAR (50) NULL,.
[Typeofproduct] NVARCHAR (50) NULL,.
[Weight] FLOAT (53) NULL,.
[Height] FLOAT (53) NULL,.
[Length] FLOAT (53) NULL,.
[Price] NCHAR (10) NULL,.
PRIMARY KEY CLUSTERED ([IdProduct] ASC).
);
SQL-скрипт для создания таблицы «Заказы»:
CREATE TABLE [dbo]. Order] (.
[IdOrder] INT NOT NULL,.
[Name] NVARCHAR (50) NULL,.
[Email] NVARCHAR (100) NULL,.
[Date] DATE NULL,.
[PointA] NVARCHAR (500) NULL,.
[PointB] NVARCHAR (500) NULL,.
[Client] NVARCHAR (50) NULL,.
[Number] NVARCHAR (50) NULL,.
[IdVehicle] INT NULL,.
[IdProduct] INT NULL,.
PRIMARY KEY CLUSTERED ([Idщквук] ASC).
);
Описание методов классов для реализации системы
В результате разработки Web-приложения были реализованы следующие проекты:
- — DataBase;
- — BusinessLogic;
- — MVCApplicationTransportServices;
Таким образом приложение получится хорошо структурированным и понятным. Каждый проект отвечает за конкретную функциональную область приложения.
В проекте DataBase определена модель разрабатываемого приложения и его сущности. Диаграмма классов DataBase представлена на рисунке 2.18.
Рисунок 2.18 — Диаграмма классов проекта DataBase.
Проект содержит следующие доменные объекты приложения:
- — Driver;
- — Order;
- — Admin;
- — Vehicle.
Класс Driver предназначен для описания сущности «Пользователь». Свойства класса:
- — int DriverId — уникальный идентификатор водителя;
- — string Name — имя пользователя;
- — string Middle_name — фамилия пользователя;
- — string Last_name — отчество пользователя;
- — string Password — пароль пользователя;
- — string Email — адресс электронной почты пользователя;
- — float DrivingExpirience — стаж;
- — string RightCtegory — категория;
Клас Order предназначен для описания сущности «Заказ». Свойства класса:
- — string Name — название маршрута;
- — string Email — идентификатор водителя;
- — date Date — дата маршрута;
- — string PointA — точка отправления;
- — string PointB — точка доставки;
- — string Client — заказчик;
- — int Number — номер заказчика;
- — int IdVehicle — идентификатор транспортного средства;
- — int IdDriver — идентификатор водителя;
Класс Admin предназначен для описания сущности «Диспетчер». Свойства класса:
- — string Name — имя пользователя;
- — string Middle_name — фамилия пользователя;
- — string Last_name — отчество пользователя;
- — string Password — пароль пользователя;
- — string Email — адресс электронной почты пользователя;
Класс Vehicle предназначен для описания сущности «Транспортные стредства». Свойства класса:
- — int IdVehicle — уникальный идентификатор записи в таблице Vehicle;
- — string Mark — идентификатор адресанта сообщения;
- — string Model — Модель;
- — string TypeofVehicle — Тип автомобиля;
- — float Capacity — Грузоподъемность;
- — float Area — Площадь платформы;
- — float Size — Объем платформы;
Проект BusinessLogic предназначен для описания механизма обработки пользовательских запросов и взаимодействия пользователя с приложением. Диаграмма классов проекта представлена на рисунке 2.19.
Рисунок 2.19 — Диаграмма классов проекта BusinessLogic.
Проект BusinessLogic содержит следующие интерфейсы:
- — IDriverRepository;
- — IOrderRepository;
- — IAdminRepository;
- — IVehicleRepository.
Интерфейс IUsersRepository предназначен для взаимодействия с репозиторием EFUsersRepository. Свойства интерфейса:
- — метод IEnumerable GetUsers () — предназначен для выборки всех пользователей с БД;
- — метод User GetUserById (int id) — предназначен для выборки пользователя с указанным идентификатором;
- — метод User GetUserByName (string userName) — предназначен для выборки пользователя с указанным логином;
- — метод MembershipUser GetMembershipUserByName (string userName) — предназначен для инициализации нового экземпляра класса MembershipUser при регистрации нового пользователя;
- — метод GetUserNameByEmail (string email) — предназначен для выборки пользователя с указанным адресом электронной почты;
- — метод void CreateUser (string userName, string password, string email, string firstName, string lastName, string middleName) — содержит параметры регистрируемого пользователя;
- — метод bool ValidateUser (string userName, string password) — предназначен для проверки валидации логина и пароля пользователя;
- — метод void SaverUser (User user) — описывает механизм сохранения нового пользователя в базу данных.
Интерфейс IOrderRepository предназначен для взаимодействия с репозиторием EFOrderRepository.
Интерфейс IVehicleRepository предназначен для взаимодействия с репозиторием EFVehicleRepository.
Интерфейс IPAdmintRepository предназначен для взаимодействия с репозиторием EFAdminRepository.
Проект BusinessLogic содержит следующие классы реализации интерфейсов:
- — EFDriverRepository;
- — EFVehicleRepository;
- — EFAdminRepository;
- — EFOrderRepository.
Класс EFUsersRepository содержит обьекты для доступа к данным приложения, предназначен для описания механизма хранения данных о пользователе. Методы класса:
- — метод public EFUsersRepository (EFDbContext context) — конструктор класса;
- — метод public IEnumerable GetUsers () — предназначен для выборки всех пользователей с БД;
- — метод public User GetUserById (int id) — предназначен для выборки пользователя с указанным идентификатором;
- — метод public User GetUserByName (string userName) — предназначен для выборки пользователя с указанным логином;
- — метод public System.Web.Security.MembershipUser GetMembershipUserByName (string userName) — предназначен для инициализации нового экземпляра класса MembershipUser при регистрации нового пользователя;
- — метод public string GetUserNameByEmail (string email) — предназначен для выборки пользователя с указанным адресом электронной почты;
- — метод public void CreateUser (string userName, string password, string email, string firstName, string lastName, string middleName) — содержит параметры регистрируемого пользователя;
- — метод public bool ValidateUser (string userName, string password) — предназначен для проверки валидации логина и пароля пользователя;
- — метод public void SaverUser (User user) — описывает механизм сохранения нового пользователя в базу данных.
Проект MVCTransportServices предназначен для описания механизма визуализации данных приложения и взаимодействия с пользователем.
Краткое описание классов и методов «Web-приложения для предоставления транспортных услуг»:
— AccountController — к основным функциям класса относятся реалирегистрация, авторизация, подтверждение регистрации.
— OrderController — к основным функциям класса относятся добавление, удаление и изменение маршрута, поиск маршрута, выбор ма…
{.
Session[" Culture" ] = new CultureInfo (lang);
return Redirect (returnUrl);
}.
[HttpGet].
public ActionResult Login ().
{.
return View (new LoginViewModel ());
}.
[HttpPost].
public ActionResult Login (LoginViewModel model).
{.
//_usersProvider.LoginUser (model.Login, model. Password);
var user = _usersProvider.LoginUser (model.Login, model. Password);
if (user == null).
{.
model.UserNotExist = true;
}.
else.
{.
UserContext.SetUser (user);
return RedirectToAction («Profile»);
}.
return View (model);
}.
[HttpGet].
public ActionResult NewLogin ().
{.
return View (new NewLoginViewModel ());
}.
[HttpPost].
public async Task NewLogin (NewLoginViewModel model).
{.
if (ModelState.IsValid).
{.
string photoURL = «» ;
if (model.Upload ≠ null).
{.
// получаем имя файла.
string fileName = System.IO.Path.GetFileName (model.Upload.FileName);
photoURL = «/Content/UserImages/» + fileName;
// сохраняем файл в папку Files в проекте.
model.Upload.SaveAs (Server.MapPath (photoURL));
}.
var user = _usersProvider.RegisterUser (model.Surname, model.Name, model. Middle_name, model. Email, model. Phone, model. RightsCategory, photoURL, model. Password);
UserContext.SetUser (user);
});
return RedirectToAction («Profile»);
}.
return View (model);
}.
[HttpGet].
public ActionResult Profile ().
{.
var User = UserContext. GetCurrentUser ();
if (User ≠ null).
{.
var model = new ProfileViewModel.
{.
Surname = User. Surname,.
Name = User.Name,.
Middle_name = User. MiddleName,.
Email = User. Email,.
//DrivingExpirience = User. DrivingExpirience,.
RightsCategory = User. RightsCategory,.
Phone = User. Phone,.
Password = User. Password,.
Repeat_password = User. Password,.
Upload = User.PhotoURL.
};
return View (model);
}.
else { return View (); }.
}.
[HttpPost].
public ActionResult Profile (ProfileViewModel model).
{.
if (ModelState.IsValid).
{.
string photoURL = model. Upload;
if (model.Image ≠ null).
{.
// получаем имя файла.
string fileName = System.IO.Path.GetFileName (model.Image.FileName);
photoURL = «/Content/UserImages/» + fileName;
// сохраняем файл в папку Files в проекте.
model.Image.SaveAs (Server.MapPath (photoURL));
}.
var user = _usersProvider.EditingProfile (model.Surname, model.Name, model. Middle_name, model. Email, model. Phone, model. RightsCategory, model. Password, photoURL);
UserContext.SetUser (user);
}.
return View (model);
}.
[HttpGet].
public ActionResult EditingOfAllProfiles (string surname, string name, string middle_name, string email, string phone, string rightsCategory, string password, string photo).
{.
var model = new ProfileViewModel.
{.
Surname = surname,.
Name = name,.
Middle_name = middle_name,.
Email = email,.
//DrivingExpirience = drivingExperiance,.
RightsCategory = rightsCategory,.
Phone = phone,.
Password = password,.
Repeat_password = password,.
Upload = photo.
};
return View (model);
}.
[HttpGet].
public ActionResult AllProfiles ().
{.
var model = new ProfileList ();
var profiles = _usersProvider.GetAllProfiles ();
foreach (var profile in profiles).
{.
var profileViewModel = new ProfileViewModel.
{.
Surname = profile. Surname,.
Name = profile.Name,.
Middle_name = profile. MiddleName,.
Email = profile. Email,.
// DrivingExpirience = profile. DrivingExpirience,.
RightsCategory = profile. RightsCategory,.
Phone = profile. Phone,.
Password = profile. Password,.
Upload = profile.PhotoURL.
};
model.ProfilesList.Add (profileViewModel);
}.
return View (model);
}.
[HttpPost].
public ActionResult AllProfiles (ProfileList model).
{.
var profiles = _usersProvider.GetAllProfilesOderBy ();
foreach (var profile in profiles).
{.
var profileViewModel = new ProfileViewModel.
{.
Surname = profile. Surname,.
Name = profile.Name,.
Middle_name = profile. MiddleName,.
Email = profile. Email,.
//DrivingExpirience = profile. DrivingExpirience,.
RightsCategory = profile. RightsCategory,.
Phone = profile. Phone,.
Password = profile. Password,.
Upload = profile.PhotoURL.
};
model.ProfilesList.Add (profileViewModel);
}.
return View (model);
}.
[HttpGet].
public ActionResult LogOut ().
{.
UserContext.SetUser (null);
return RedirectToAction («Index», «Information»);
}.
}.
}.
VehicleController.cs.
using MvcApplication1. Models;
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.Mvc;
using BusinessLogic. Interfaces;
using BusinessLogic. Providers;
using MvcApplication1. Helpers;
using System. Globalization;
using System.Net.Mail;
using System.Threading.Tasks;
namespace MvcApplication1.Controllers.
{.
public class VehicleController: Controller.
{.
private IVehiclesProvider _vehiclesProvider = new VehiclesProvider ();
// GET: /Vehicle/.
[HttpGet].
public ActionResult Vehicle ().
{.
return View (new VehicleViewModel ());
}.
[HttpGet].
public ActionResult AllVehicles ().
{.
var model = new VehicleList ();
var vehicles = _vehiclesProvider.GetAllVehicles ();
foreach (var vehicle in vehicles).
{.
var vehicleViewModel = new VehicleViewModel.
{.
Mark = vehicle. Mark,.
Model = vehicle. Model,.
TypeofVehicle = vehicle. TypeofVehicle,.
Capacity = vehicle. Сapacity,.
Area = vehicle. Area,.
Size = vehicle.Size.
};
model.VehiclesList.Add (vehicleViewModel);
}.
return View (model);
}.
[HttpPost].
public ActionResult AllVehicles (VehicleList model).
{.
var vehicles = _vehiclesProvider.GetAllVehiclesOderBy ();
foreach (var vehicle in vehicles).
{.
var vehicleViewModel = new VehicleViewModel.
{.
Mark = vehicle. Mark,.
Model = vehicle. Model,.
TypeofVehicle = vehicle. TypeofVehicle,.
Capacity = vehicle. Сapacity,.
Area = vehicle. Area,.
Size = vehicle.Size.
};
model.VehiclesList.Add (vehicleViewModel);
}.
return View (model);
}.
}.
}.
InformationController.cs.
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.Mvc;
namespace MvcApplication1.Controllers.
{.
public class InformationController: Controller.
{.
public ActionResult Index ().
{.
return View ();
}.
public ActionResult TermsUse ().
{.
return View ();
}.
}.
}.
LoginViewModel.cs.
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System. Linq;
using System. Web;
namespace MvcApplication1.Models.
{.
public class LoginViewModel.
{.
public bool UserNotExist { get; set; }.
public string Login { get; set; }.
public string Password { get; set; }.
}.
public class NewLoginViewModel.
{.
public HttpPostedFileBase Upload { get; set; }.
[Required (ErrorMessage = «Ошибка, поле „Имя“ должно быть обязательно заполненным!»)].
public string Name { get; set; }.
[Required (ErrorMessage = «Ошибка, поле „Фамилия“ должно быть обязательно заполненным!»)].
public string Surname { get; set; }.
public string Middle_name { get; set; }.
[Required (ErrorMessage = «Ошибка, поле „Емейл“ должно быть обязательно заполненным!»)].
[RegularExpression (@" [A-Za-z0−9._%±]+@[A-Za-z0−9.-]+. A-Za-z]{2,4}", ErrorMessage = «Некорректный адрес»)].
public string Email { get; set; }.
public string Phone { get; set; }.
[StringLength (50, MinimumLength = 0, ErrorMessage = «Длина строки должна быть меньше 100 символов»)].
//public float DrivingExpirience { get; set; }.
public string RightsCategory { get; set; }.
[Required (ErrorMessage = «Ошибка, поле „Пароль“ должно быть обязательно заполненным!»)].
[DataType (DataType.Password)].
public string Password { get; set; }.
[Required (ErrorMessage = «Ошибка, поле „Повторный ввод пароля“ должно быть обязательно заполненным!»)].
[Compare («Password», ErrorMessage = «Пароли не совпадают»)].
[DataType (DataType.Password)].
public string Repeat_password { get; set; }.
}.
}.
ProfileList.cs.
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
namespace MvcApplication1.Models.
{.
public class ProfileList.
{.
public ProfileList ().
{.
ProfilesList = new List ();
}.
public List ProfilesList { get; set; }.
}.
}.
ProfileViewModel.cs.
using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.ComponentModel.DataAnnotations;
namespace MvcApplication1.Models.
{.
public class ProfileViewModel.
{.
public string Surname { get; set; }.
public string Name { get; set; }.
public string Middle_name { get; set; }.
public string Email { get; set; }.
public string Phone { get; set; }.
public string RightsCategory { get; set; }.
[StringLength (50, MinimumLength = 0, ErrorMessage = «Длина строки должна быть меньше 100 символов»)].
public string Password { get; set; }.
// public float DrivingExpirience { get; set; }.
public string Upload { get; set; }.
public HttpPostedFileBase Image { get; set; }.
[Compare («Password», ErrorMessage = «Пароли не совпадают»)].
[DataType (DataType.Password)].
public string Repeat_password { get; set; }.
}.
}.
Product.cs.
using System;
using System.Collections.Generic;
using System.Data.Linq.Mapping;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace Database.Entyties.
{.
[Table (Name = «Products»)].
public class Product.
{.
[Column].
public int IdProduct { get; set; }.
[Column].
public string Name { get; set; }.
[Column].
public string Typeofproduct { get; set; }.
[Column].
public float Weight { get; set; }.
[Column].
public float Width { get; set; }.
[Column].
public float Height { get; set; }.
[Column].
public float Length { get; set; }.
[Column].
public float Price { get; set; }.
}.
}.
Traffic.cs.
using System;
using System.Collections.Generic;
using System.Data.Linq.Mapping;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace Database.Entyties.
{.
[Table (Name = «Traffics»)].
public class Traffic.
{.
[Column].
public int IdTraffic { get; set; }.
[Column].
public string Name { get; set; }.
[Column].
public string Email { get; set; }.
[Column].
public DateTime Date { get; set; }.
[Column].
public string PointA { get; set; }.
[Column].
public string PointB { get; set; }.
[Column].
public string Client { get; set; }.
[Column].
public string Number { get; set; }.
[Column].
public int IdVehicle { get; set; }.
[Column].
public int IdProduct { get; set; }.
}.
}.
Vehicle.cs.
using System;
using System.Collections.Generic;
using System.Data.Linq.Mapping;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace Database.Entyties.
{.
[Table (Name = «Vehicles»)].
public class Vehicle.
{.
[Column].
public int IdVehicle { get; set; }.
[Column].
public string Mark { get; set; }.
[Column].
public string Model { get; set; }.
[Column].
public string TypeofVehicle { get; set; }.
[Column].
public float Сapacity { get; set; }.
[Column].
public float Area { get; set; }.
[Column].
public float Size { get; set; }.
}.
}.
User.cs.
using System;
using System.Collections.Generic;
using System.Data.Linq.Mapping;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
namespace Database.Entyties.
{.
[Table (Name = «Users»)].
public class User.
{.
[Column].
public string Surname { get; set; }.
[Column].
public string Name { get; set; }.
[Column (Name = «Middle_name»)]//указываем, если имя изменилось.
public string MiddleName { get; set; }.
[Column (IsPrimaryKey = true)].
public string Email { get; set; }.
[Column].
public string Phone { get; set; }.
[Column].
public string PhotoURL { get; set; }.
//[Column (Name = «DrivingExpirience»)]//указываем, если имя изменилось.
//public float DrivingExpirience { get; set; }.
[Column (Name = «RightsCategory»)]//указываем, если имя изменилось.
public string RightsCategory { get; set; }.
[Column].
public string Password { get; set; }.
[Column].
public bool IsAdmin { get; set; }.
}.
}.
IUserProvider.cs.
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
using Database. Entyties;
namespace BusinessLogic.Interfaces.
{.
public interface IUsersProvider.
{.
User RegisterUser (string surname, string name, string middleName, string email, string phone, string rightsCategory, string password, string photoURL);
User LoginUser (string Login, string Password);
User EditingProfile (string Surname, string Name, string MiddleName, string Phone, string Email, string RightsCategory, string Password, string PhotoURL);
IEnumerable GetAllProfiles ();
IEnumerable GetAllProfilesOderBy ();
}.
}.
IuserInterface.cs.
using BusinessLogic. Interfaces;
using System;
using System.Collections.Generic;
using System. Linq;
using System. Text;
using System.Threading.Tasks;
using Database. Entyties;
using Database;
namespace BusinessLogic.Providers.
{.
public class UsersProvider: IUsersProvider.
{.
private TransportationServicesDatabaseContext _context = new TransportationServicesDatabaseContext ();
public User RegisterUser (string surname, string name, string middleName, string email, string phone, string rightsCategory, string password, string photoURL).
{.
var user = new User.
{.
Surname = surname,.
Name = name,.
MiddleName = middleName,.
Email = email,.
Phone = phone,.
//DrivingExpirience = drivingExpirience,.
RightsCategory = rightsCategory,.
Password = password,.
PhotoURL = photoURL.
};
_context.Users.InsertOnSubmit (user);
_context.SubmitChanges ();
return user;
}.
public User LoginUser (string login, string password).
{.
var user = _context.Users.FirstOrDefault (u => string. Equals (u.Email, login));
if (user ≠ null && string. Equals (user.Password, password)).
{.
return user;
}.
return null;
}.
public User EditingProfile (string surname, string name, string middleName, string email, string phone, string rightsCategory, string password, string photoURL).
{.
var user = _context.Users.FirstOrDefault (u => int. Equals (u.Email, email));
user.Surname = surname;
user.Name = name;
user.MiddleName = middleName;
user.Phone = phone;
user.RightsCategory = rightsCategory;
user.Password = password;
// user. DrivingExpirience = drivingExpirience;
user.PhotoURL = photoURL;
_context.SubmitChanges ();
return user;
}.
public IEnumerable GetAllProfiles ().
{.
return _context.Users.OrderBy (t => t. Email);
}.
public IEnumerable GetAllProfilesOderBy ().
{.
return _context.Users.OrderBy (t => t. Surname);
}.
}.
}.