diff --git a/Architecture_Diagram.svg b/Architecture_Diagram.svg deleted file mode 100644 index c1e73cb..0000000 --- a/Architecture_Diagram.svg +++ /dev/null @@ -1 +0,0 @@ -

Core

Services

UI

ProductionBatch

-List _inventoryIndexes

+string BatchId

+string ProductName

+int Quantity

+double UnitProductionCost

+double UnitSellPrice

+bool IsPriced

+bool IsSold

+IReadOnlyList InventoryIndexes

+double TotalCost

+void SetUnitSellPrice(double price)

+void MarkAsSold()

+void AddInventoryIndex(int index)

«abstract»

Employee

-int _idCounter

+int Id

+string Name

+string Username

+string PasswordHash

+bool IsFirstTimeLogin

+string Role

+void UpdateName(string newName)

+void UpdateUsername(string newUsername)

+void ChangePassword(string newPasswordHash)

+void InitializeIdCounter(int maxId)

+string ShowActivity()

+List GetAvailableMenuOptions()

Director

+string ShowActivity()

+List GetAvailableMenuOptions()

Technician

+string ShowActivity()

+List GetAvailableMenuOptions()

SalesAgent

+string ShowActivity()

+List GetAvailableMenuOptions()

Accountant

+string ShowActivity()

+List GetAvailableMenuOptions()

ProductionOrder

+string OrderId

+string ProductName

+int Quantity

+int CompletedCount

+int AssignedTechnicianId

+bool IsComplete

+void IncrementCompletedCount()

«enumeration»

MachineStatus

Running

Stopped

Maintenance

«enumeration»

MachineCondition

Excellent

Good

Critical

«abstract»

Machine

-int _idCounter

+int Id

+string Name

+string Manufacturer

+string SerialNumber

+DateTime InstallationDate

+List Parts

+MachineStatus Status

+MachineCondition Condition

+Type SupportedProductType

#ProductionOrder ActiveOrder

+void InitializeIdCounter(int maxId)

+TimeSpan GetMachineAge()

-double GetMachineAgeInYears()

+void StartOrder(ProductionOrder order)

+bool StartMachine()

+void StopMachine()

#void ApplyProductionWearAndTear()

+void InspectMachine()

+bool NeedsRepair()

+bool RepairMachine()

-MachineCondition GetMachineCondition()

#bool TryProcessMotherboard(Product product, BoardState requiredInputState, BoardState nextState, string stageName)

+bool Produce(Product product)

LithographyMachine

+bool Produce(Product blueprint)

SmtMachine

+bool Produce(Product product)

PaPMachine

+bool Produce(Product product)

ReflowOven

+bool Produce(Product product)

«enumeration»

ReportStatus

Pending

Fulfilled

ReportRequest

+string RequestId

+string ReportType

-string RequestedByDirectorName

+ReportStatus Status

+void Fulfill()

+string ToString()

Factory

-List _batches

-List _employees

-List _inventory

-List _machines

-Queue _pendingOrders

-Queue _pendingReportRequests

+IEnumerable PendingOrders

+int OrderCount

+IEnumerable PendingReportRequests

+int ReportRequestCount

+IReadOnlyList Batches

+int BatchCount

+IReadOnlyList Employees

+IReadOnlyList Machines

+IReadOnlyList Inventory

+int InventoryCapacity

+void LoadFromRepository(IEnumerable employees, IEnumerable machines, IEnumerable products)

+void AddEmployee(Employee employee)

+void AddProduct(Product product, string batchId)

+void AddOrder(ProductionOrder order)

+void AddReportRequest(ReportRequest request)

+void AddBatch(ProductionBatch batch)

«enumeration»

PartCondition

Excellent

Good

Critical

«abstract»

MachinePart

+string Name

+PartCondition Condition

+void BreakDown()

+void Repair(PartCondition restoredCondition)

+void DegradeStep()

+string PrintPartInfo()

PowerSupply

+int Voltage

+string PrintPartInfo()

CoolingSystem

+string Type

+string PrintPartInfo()

ControlUnit

+string Processor

+string PrintPartInfo()

AoiSystem

+string SystemType

+string PrintPartInfo()

«abstract»

Product

-double _productionCost

-int _quantity

-double _sellingPrice

+string Name

+double ProductionCost

+double SellingPrice

+int Quantity

+void UpdateSellingPrice(double price)

+void AddQuantity(int amount)

+void DeductQuantity(int amount)

+string GetTechnicalSpecifications()

Microprocessor

+string Architecture

+int Cores

+double ClockSpeed

+string GetTechnicalSpecifications()

«enumeration»

BoardState

BlankBoard

SolderPrinted

ComponentsPlaced

BakedAndSoldered

Motherboard

+BoardState CurrentState

+string SocketStandard

+string PhysicalForm

+void TransitionTo(BoardState nextState)

+string GetTechnicalSpecifications()

«interface»

IJsonRepository

+List Load()

+void Save(IEnumerable data)

«interface»

ILoggerService

+void LogInfo(LogOrigin origin, LogEvent eventType, string "")

+void LogWarning(LogOrigin origin, LogEvent eventType, string "")

+void LogError(string message)

+void ShowOperationHistory()

«interface»

IAccountService

+bool UpdateFullName(Employee user, string newName)

+bool UpdateUsername(Employee user, string newUsername)

+bool UpdatePassword(Employee user, string newPassword)

Authentication

+Employee Authenticate(IJsonRepository repository, string username, string password)

AccountService

+bool UpdateFullName(Employee user, string newName)

+bool UpdateUsername(Employee user, string newUsername)

+bool UpdatePassword(Employee user, string newPassword)

-bool PersistChanges(Employee user)

JsonRepository

-JsonSerializerOptions _serializerOptions

+List Load()

+void Save(IEnumerable items)

DataSeeder

+void Seed()

SecurityHelper

+string HashPassword(string password)

+bool VerifyPassword(string password, string hashedPassword)

«interface»

IFileSystemService

+void WriteToFile(string fileName, string content)

+string ReadFromFile(string fileName)

+void AppendToFile(string fileName, string content)

FileSystemService

+string BaseDirectory

+void WriteToFile(string fileName, string content)

+string ReadFromFile(string fileName)

+void AppendToFile(string fileName, string content)

«enumeration»

LogOrigin

SYSTEM

USER

«enumeration»

LogEvent

LoginSuccess

LoginFailed

Logout

ProductionStarted

ProductionInterrupted

ProductionCompleted

MaintenancePerformed

ClosingApplication

StaffViewed

EmployeeAdded

FleetStatusViewed

InventoryViewed

InventoryAnalyticsViewed

OrderPlaced

PendingOrdersViewed

SaleRecorded

BatchesViewed

BatchPriceSet

ReportRequestsProcessed

ProductionSummaryReportGenerated

EmployeeReportGenerated

BatchRevenueReportGenerated

OrderBacklogReportGenerated

PrintableReportRequested

FactoryOverviewReportGenerated

StaffingReportGenerated

MachineFleetReportGenerated

InventoryReportGenerated

FullNameUpdated

UsernameUpdated

PasswordUpdated

PasswordChangedFirstLogin

LoggerService

+void LogInfo(LogOrigin origin, LogEvent eventType, string "")

+void LogWarning(LogOrigin origin, LogEvent eventType, string "")

+void LogError(string message)

+void ShowOperationHistory()

-void WriteToFile(string level, LogOrigin origin, string message)

LoginMenuHandler

+Employee ShowLoginScreen(IJsonRepository repository, ILoggerService loggerService)

AccountSettingsMenuHandler

+void Run(Employee user, IAccountService accountService, ILoggerService loggerService)

-void ChangeFullName(Employee user, IAccountService accountService, ILoggerService loggerService)

-void ChangeUsername(Employee user, IAccountService accountService, ILoggerService loggerService)

-void ChangePassword(Employee user, IAccountService accountService, ILoggerService loggerService)

Program

-void Main()

-void ExecuteQuickAction(Employee user, Factory factory, IJsonRepository authRepository, ILoggerService loggerService, IJsonRepository machinesRepo, IJsonRepository productsRepo)

EmployeeMenuHandler

+void Run(Factory factory, Employee loggedInUser, ILoggerService loggerService, IJsonRepository repository)

~void DisplayStaffTable(Factory factory)

-void AddNewEmployeeFlow(Factory factory, IJsonRepository repository, ILoggerService loggerService, Employee loggedInUser)

ProductMenuHandler

+void Run(Factory factory, Employee currentUser, ILoggerService loggerService, IJsonRepository productRepo)

-void DisplayInventoryTable(Factory factory)

-void DisplayInventoryAnalytics(Factory factory)

AccountingMenuHandler

+void Run(Factory factory, Employee loggedInUser, ILoggerService loggerService)

-void ShowBatches(Factory factory)

-void SetBatchPrice(Factory factory, ILoggerService loggerService, Employee loggedInUser)

-void ProcessReportRequests(Factory factory, Employee accountant, ILoggerService loggerService)

ProductionMenuHandler

+void Run(Factory factory, Employee loggedInUser, ILoggerService loggerService, IJsonRepository machineRepo, IJsonRepository productRepo)

-Product CreateProductTemplate(string productName, double unitCost)

-Product CreateProducedProduct(Product template)

-void RunMotherboardWorkflow(Factory factory, ProductionOrder order, ILoggerService loggerService)

-bool RunMotherboardStage(Machine machine, ProductionOrder order, Motherboard board, string stageName, string spinnerText, string failureMessage)

-void EnsureMachineReady(Machine machine)

-List GetPendingOrders(Factory factory)

-ProductionBatch StartProductionBatch(Factory factory, ProductionOrder order, double unitCost)

-int CommitProducedUnit(Factory factory, ProductionOrder order, ProductionBatch batch, Product produced)

SalesMenuHandler

+void Run(Factory factory, Employee loggedInUser, ILoggerService loggerService, IJsonRepository productRepo)

-void PlaceOrder(Factory factory, ILoggerService loggerService, Employee loggedInUser)

-List GetTechnicians(Factory factory)

+void ShowPendingOrders(Factory factory)

-void RecordSale(Factory factory, ILoggerService loggerService, Employee loggedInUser)

MenuOptions

PasswordChangeHandler

+void Run(Employee user, IJsonRepository repository, ILoggerService loggerService)

ReportMenuHandler

+void Run(Factory factory, Employee loggedInUser, ILoggerService loggerService)

-void ShowEmployeeReport(Factory factory)

-void RequestPrintableReport(Factory factory, Employee director, ILoggerService loggerService)

-void ShowProductionSummary(Factory factory, Employee loggedInUser)

-void ShowBatchRevenueSummary(Factory factory)

-void ShowOrderBacklogSummary(Factory factory)

-int GetTotalInventoryUnits(Factory factory)

-void Pause()

MachineMenuHandler

+void Run(Factory factory, Employee loggedInUser, ILoggerService loggerService, IJsonRepository machineRepo, IJsonRepository productRepo)

-void DisplayFleetOverview(Factory factory)

-void RunInspection(Factory factory, ILoggerService loggerService)

TuiHelper

+void RenderSessionHeader(Employee user, Factory factory)

FactoryReportMenuHandler

+void Run(Factory factory, Employee loggedInUser, ILoggerService loggerService)

-void ShowOverview(Factory factory, Employee loggedInUser)

-void ShowStaffingReport(Factory factory)

-void ShowMachineFleetReport(Factory factory)

-void ShowInventoryReport(Factory factory)

-void Pause()

\ No newline at end of file diff --git a/Core_Diagram.svg b/Core_Diagram.svg new file mode 100644 index 0000000..cbbf2f0 --- /dev/null +++ b/Core_Diagram.svg @@ -0,0 +1 @@ +

Employee

+Int32 Id

+String Name

+String Username

+String PasswordHash

+Boolean IsFirstTimeLogin

+String Role

+String QuickActionName

+UpdateName()

+UpdateUsername()

+ChangePassword()

+ShowActivity()

+GetAvailableMenuOptions()

Director

+String QuickActionName

+ShowActivity()

+GetAvailableMenuOptions()

Technician

+String QuickActionName

+ShowActivity()

+GetAvailableMenuOptions()

SalesAgent

+String QuickActionName

+ShowActivity()

+GetAvailableMenuOptions()

Accountant

+String QuickActionName

+ShowActivity()

+GetAvailableMenuOptions()

Factory

+IEnumerable PendingOrders

+Int32 OrderCount

+IEnumerable PendingReportRequests

+Int32 ReportRequestCount

+IReadOnlyList Batches

+Int32 BatchCount

+IReadOnlyList Employees

+IReadOnlyList Machines

+IReadOnlyList Inventory

+Int32 MaxBatches

+Int32 MaxUnitsPerBatch

+Int32 MaxCapacity

+Int32 MinStockThreshold

+GetTotalUnsoldUnits()

+LoadFromRepository()

+AddEmployee()

+AddProduct()

+AddOrder()

+AddReportRequest()

+AddBatch()

+RemoveProduct()

+RemoveBatch()

+RemoveEmployee()

Machine

+Int32 Id

+String Name

+String Manufacturer

+String SerialNumber

+DateTime InstallationDate

+List Parts

+MachineStatus Status

+MachineCondition Condition

+Type SupportedProductType

+Int32 TotalProcessedCount

+Int32 TotalFailuresCount

+IncrementSuccess()

+IncrementFailure()

+GetMachineAge()

+StartOrder()

+StartMachine()

+CalculateEfficiency()

+GetEstimatedDaysUntilMaintenance()

+InspectMachine()

+NeedsRepair()

+RepairMachine()

+Produce()

LitographyMachine

+Produce()

SmtMachine

+Produce()

PaPMachine

+Produce()

ReflowOven

+Produce()

MachinePart

+String Name

+Nullable Condition

+BreakDown()

+Repair()

+DegradeStep()

+PrintPartInfo()

PowerSupply

+Int32 Voltage

+PrintPartInfo()

CoolingSystem

+String Type

+PrintPartInfo()

ControlUnit

+String Processor

+PrintPartInfo()

AoiSystem

+String SystemType

+PrintPartInfo()

Product

+String Name

+String BatchId

+Boolean IsSold

+Double ProductionCost

+Double SellingPrice

+Int32 Quantity

+Int32 MinStockThreshold

+IsLowStock()

+MarkAsSold()

+UpdateSellingPrice()

+AddQuantity()

+DeductQuantity()

+GetTechnicalSpecifications()

Microprocessor

+Nullable Cores

+Double ClockSpeed

+GetTechnicalSpecifications()

Motherboard

+BoardState CurrentState

+String SocketStandard

+String PhysicalForm

+TransitionTo()

+GetTechnicalSpecifications()

ProductionBatch

+String BatchId

+String ProductName

+Int32 Quantity

+Double UnitProductionCost

+Nullable UnitSellPrice

+Boolean IsPriced

+Boolean IsSold

+IReadOnlyList InventoryIndexes

+Double TotalCost

+SetUnitSellPrice()

+MarkAsSold()

+MarkAsUnsold()

+AddInventoryIndex()

ProductionOrder

+String OrderId

+String ProductName

+Int32 Quantity

+Int32 CompletedCount

+Int32 AssignedTechnicianId

+Boolean IsComplete

+String CustomProductName

+Nullable Cores

+Nullable ClockSpeed

+String SocketStandard

+String PhysicalForm

+String PlacedBy

+Boolean IsNotifiedComplete

+String BatchId

+DateTime CreatedAt

+GetPriorityScore()

+IncrementCompletedCount()

ReportRequest

+String RequestId

+String ReportType

+String RequestedByDirectorName

+Boolean IsNotifiedComplete

+String ExportDestination

+ReportStatus Status

+Fulfill()

+ToString()

\ No newline at end of file diff --git a/README.md b/README.md index 36cdf26..c2a0701 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,91 @@ -# Smart Factory Management System - -## Introduction -The **Smart Factory Management System** is a robust console-based application designed to manage the core operations of a modern manufacturing facility. Built using C# and the .NET framework, it provides a comprehensive text-based user interface (TUI) powered by `Spectre.Console`. - -## Features -- **Role-Based Access Control:** Differentiated access and menus for Directors, Technicians, Sales Agents, and Accountants. -- **Production Management:** Initiate, track, and complete production orders (e.g., Motherboards, Microprocessors) utilizing a fleet of specialized machines. -- **Inventory & Batch Tracking:** Full visibility into finished goods, production batches, and stock capacity. -- **Machine Fleet Maintenance:** Track machine conditions, performance metrics, and perform essential maintenance. -- **Comprehensive Reporting:** Generate dynamic reports on staffing, revenue, machine fleet, and production summaries. -- **Auditing & Logging:** A centralized logging service tracks critical user actions and system events. - -## Architecture -The system is cleanly decoupled into three main projects (namespaces): -- **Core:** Contains domain entities like `Factory`, `Employee`, `Machine`, and `Product`. Models the core business rules and state. -- **Services:** Handles infrastructure concerns such as JSON data persistence (`JsonRepository`), authentication, and logging (`LoggerService`). -- **UI:** A rich console application utilizing `Spectre.Console` for interactive menus, tables, and prompts, organized by domain handlers (`ProductMenuHandler`, `ProductionMenuHandler`, etc.). - -## Installation / Setup Instructions -1. Navigate to the project's **Releases** page on GitHub. -2. Download the latest `.zip` release. -3. Extract the contents of the `.zip` file to a directory of your choice. +# 🏭 Smart Factory Management System + +![Project Banner](https://img.shields.io/badge/Status-Active-success) ![Version](https://img.shields.io/github/v/release/CasperGamingOne/Smart-Factory-Management-System) ![License](https://img.shields.io/github/license/CasperGamingOne/Smart-Factory-Management-System) + +## 📖 Introduction +The **Smart Factory Management System** is a robust, professional-grade console-based application designed to simulate and manage the core operations of a modern manufacturing facility. Built entirely in C# targeting the .NET 10.0 framework, it provides an advanced Text-based User Interface (TUI) powered by `Spectre.Console`. + +It goes beyond simple data entry, featuring complex polymorphic object interactions, layered architecture, simulated production workflows, and real-time state tracking. + +--- + +## ✨ Key Features +- 🔐 **Role-Based Access Control:** Highly differentiated access and menus for diverse user roles (Directors, Technicians, Sales Agents, and Accountants). +- ⚙️ **Production Management:** Initiate, track, and complete intricate production orders (e.g., Motherboards, Microprocessors), utilizing a fleet of specialized machines. +- 📦 **Inventory & Batch Tracking:** Full visibility into finished goods, dynamic production batches, and intelligent stock capacity alerts. +- 🛠️ **Machine Fleet Maintenance:** Meticulous tracking of machine conditions, part degradation, performance metrics, and essential maintenance workflows. +- 📊 **Comprehensive Reporting:** Generate, request, and fulfill dynamic reports on staffing, revenue, machine fleet status, and detailed production summaries. +- 📝 **Auditing & Logging:** A centralized, robust logging service tracks all critical user actions and system events for complete accountability. +- ⏪ **Undo System:** Advanced command pattern implementation allowing users to undo specific sensitive operations. + +--- + +## 🏗️ System Architecture + +The repository is strictly modularized into distinct namespaces and projects to enforce separation of concerns, scalability, and maintainability. The system heavily relies on Object-Oriented Programming (OOP) principles, employing deep inheritance hierarchies and interface-driven design. + +### 🧠 Core (Domain Layer) +This layer encapsulates all business rules, state, and domain entities. It is completely agnostic of UI or data persistence mechanisms. +- **`Factory`**: The central state manager, orchestrating employees, machines, inventory, and production queues. +- **`Employee` Hierarchy**: An abstract base class branching into `Director`, `Technician`, `SalesAgent`, and `Accountant`. Each subclass dictates specific quick actions and menu options. +- **`Product` Hierarchy**: An abstract base defining common traits (cost, price, stock), inherited by `Microprocessor` and `Motherboard`. Employs polymorphic JSON serialization (`[JsonDerivedType]`). +- **`Machine` & `MachinePart`**: Simulates factory equipment. Machines consist of degradable parts (`PowerSupply`, `CoolingSystem`, `ControlUnit`, `AoiSystem`) that wear down during production and require technician intervention. + +### ⚙️ Services (Infrastructure & Logic Layer) +This layer acts as the bridge between the Core domain and external systems (like the file system), enforcing business logic and data persistence. +- **`JsonRepository`**: A generic repository pattern implementation handling polymorphic serialization/deserialization of domain objects to/from JSON files, utilizing `.NET`'s latest JSON features. +- **`Authentication` & `AccountService`**: Manages secure logins, hashing, and role verification. +- **`LoggerService`**: Centralized activity tracking, storing logs with timestamps, origins, and contexts. +- **`UndoService`**: Implements a generic state-reversal mechanism using localized command history. + +### 🖥️ UI (Presentation Layer) +A rich console application leveraging `Spectre.Console` for interactive menus, tables, grids, and prompts. +- **Strict Decoupling**: The UI layer NEVER accesses data stores directly; it exclusively routes requests through the `Services` layer. +- **Handlers (`*MenuHandler.cs`)**: Dedicated handlers for specific modules (e.g., `ProductionMenuHandler`, `MachineMenuHandler`), ensuring the `Program.cs` remains a clean entry point. + +--- + +## 🚀 Installation / Setup Instructions + +1. Navigate to the project's **Releases** page on GitHub: [Latest Release](https://github.com/CasperGamingOne/Smart-Factory-Management-System/releases/latest). +2. Download the latest `.zip` release asset. +3. Extract the contents of the `.zip` file to a secure directory of your choice. 4. Run the executable (`SmartFactory_ManagementSystem.exe` or equivalent depending on your OS) directly from the extracted folder. -*(Note: Ensure your terminal supports ANSI escape sequences for the best TUI experience.)* +*(Note: Ensure your terminal supports ANSI escape sequences for the best TUI experience. Modern Windows Terminal, iTerm2, or standard Linux terminals work perfectly).* + +--- + +## 🎮 Usage Guide + +Upon launching the application, you will be greeted by the login screen. +- **Default Login**: If running for the first time, default users are seeded. (You find them inside the program directory: $My Documents/SmartFactoryData/Employees.json | first time password is password). +- **Navigation**: Use the `Arrow Keys` (Up/Down) to navigate menus, and `Enter` to select. The UI is designed to be highly intuitive, preventing invalid inputs natively. +- **Workflows**: Technicians manage machines and process orders. Sales Agents manage the product catalog and place new orders. Directors oversee the entire operation and request reports, which Accountants then fulfill. + +--- + +## 📚 Learning Experience + +Throughout the development of this project, several advanced software engineering concepts were applied: +- **Advanced OOP:** Extensive use of inheritance, abstract classes, method overriding, and polymorphism to model complex factory entities. +- **Polymorphic JSON Serialization:** Overcoming the challenges of saving and loading lists containing mixed derived types using `[JsonDerivedType]` attributes. +- **Terminal UI Design:** Utilizing `Spectre.Console` to transform a standard text console into an interactive, aesthetically pleasing dashboard. +- **Layered Architecture:** Enforcing strict boundaries between UI, Services, and Core logic, promoting clean code, testability, and easier maintenance. + +--- + +## 🗺️ Project Structure & UML Diagrams -## Usage -Upon starting the application, you will be prompted to log in. Default seeded users are provided based on roles (e.g., `admin`/`admin` for Director, or specific usernames set up by `DataSeeder`). -Navigate through the intuitive TUI using the arrow keys and `Enter` to manage employees, execute production workflows, fulfill sales orders, and review factory reports. +To ensure the architecture is presentation-friendly and easily digestible, the UML diagrams have been split by their respective architectural layers. -## Learning Experience -Throughout the development of this project, several key software engineering concepts were applied and mastered: -- **Object-Oriented Programming (OOP):** Extensive use of inheritance and polymorphism to model Employees, Machines, and Products. -- **JSON Polymorphic Serialization:** Utilizing `[JsonDerivedType]` attributes to seamlessly serialize and deserialize complex object hierarchies into a single JSON file. -- **Terminal UI Design:** Leveraging `Spectre.Console` to build interactive, aesthetically pleasing, and user-friendly console interfaces beyond standard text output. -- **Layered Architecture:** Decoupling the user interface from business logic and data access, promoting cleaner code and easier maintenance. +### 🧩 Core Domain Diagram +Illustrates the foundational business entities and their deep inheritance structures. +![Core Architecture](Core_Diagram.svg) -## Project Structure & UML Diagram -Below is the comprehensive Mermaid class diagram illustrating the system's architecture, including classes, methods, fields, and their relationships, categorized by their respective projects. +### 🛠️ Services Diagram +Details the infrastructure layer, including generic repositories, logging, and state management. +![Services Architecture](Services_Diagram.svg) -![Architecture Diagram](Architecture_Diagram.svg) +### 🖥️ UI Handlers Diagram +Showcases the decoupling of presentation logic into specialized module handlers. +![UI Architecture](UI_Diagram.svg) diff --git a/Services_Diagram.svg b/Services_Diagram.svg new file mode 100644 index 0000000..f054df0 --- /dev/null +++ b/Services_Diagram.svg @@ -0,0 +1 @@ +

AccountService

+UpdateFullName()

+UpdateUsername()

+UpdatePassword()

Authentication

DataSeeder

+Seed()

IFileSystemService

+String BaseDirectory

+WriteToFile()

+ReadFromFile()

+AppendToFile()

FileSystemService

+String BaseDirectory

+WriteToFile()

+ReadFromFile()

+AppendToFile()

JsonRepository

+Load()

+Save()

LoggerService

+LogInfo()

+LogWarning()

+LogError()

+ShowOperationHistory()

NotificationService

+CheckAndShowNotifications()

SecurityHelper

IJsonRepository

+Load()

+Save()

INotificationService

+CheckAndShowNotifications()

ILoggerService

+LogInfo()

+LogWarning()

+LogError()

+ShowOperationHistory()

IAccountService

+UpdateFullName()

+UpdateUsername()

+UpdatePassword()

ICommand

+String Description

+String ExecutedBy

+DateTime ExecutedAt

+Undo()

IUndoService

+RegisterCommand()

+GetUndoableCommands()

+UndoCommand()

UndoService

+RegisterCommand()

+GetUndoableCommands()

+UndoCommand()

ChangeFullNameCommand

+String Description

+String ExecutedBy

+DateTime ExecutedAt

+Undo()

ChangeUsernameCommand

+String Description

+String ExecutedBy

+DateTime ExecutedAt

+Undo()

SellFromBatchCommand

+String Description

+String ExecutedBy

+DateTime ExecutedAt

+Undo()

SellFromInventoryCommand

+String Description

+String ExecutedBy

+DateTime ExecutedAt

+Undo()

RemoveEmployeeCommand

+String Description

+String ExecutedBy

+DateTime ExecutedAt

+Undo()

\ No newline at end of file diff --git a/UI_Diagram.svg b/UI_Diagram.svg new file mode 100644 index 0000000..53122b9 --- /dev/null +++ b/UI_Diagram.svg @@ -0,0 +1 @@ +

AccountingMenuHandler

AccountSettingsMenuHandler

EmployeeMenuHandler

LoginMenuHandler

MachineMenuHandler

PasswordChangeHandler

ProductionMenuHandler

ProductMenuHandler

Program

ReportMenuHandler

SalesMenuHandler

TuiHelper

UndoMenuHandler

\ No newline at end of file