FastTechFoodsOrder.Shared 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package FastTechFoodsOrder.Shared --version 1.0.0
                    
NuGet\Install-Package FastTechFoodsOrder.Shared -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FastTechFoodsOrder.Shared" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FastTechFoodsOrder.Shared" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="FastTechFoodsOrder.Shared" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FastTechFoodsOrder.Shared --version 1.0.0
                    
#r "nuget: FastTechFoodsOrder.Shared, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FastTechFoodsOrder.Shared@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FastTechFoodsOrder.Shared&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=FastTechFoodsOrder.Shared&version=1.0.0
                    
Install as a Cake Tool

FastTechFoodsOrder.Shared

.NET Version

Uma biblioteca compartilhada .NET para o sistema FastTechFoods, fornecendo componentes comuns para gerenciamento de pedidos, incluindo enums, mensagens de integração e utilitários para manipulação de status de pedidos.

📋 Índice

🚀 Sobre o Projeto

O FastTechFoodsOrder.Shared é uma biblioteca desenvolvida para centralizar componentes comuns utilizados no ecossistema de pedidos do FastTechFoods. Esta biblioteca fornece definições padronizadas para status de pedidos, mensagens de eventos e utilitários para facilitar a integração entre diferentes microserviços.

Características

  • ✅ Enums padronizados para status de pedidos
  • ✅ Mensagens de eventos tipadas para integração entre microserviços
  • ✅ Utilitários para conversão e validação de status
  • ✅ Validação de transições de status
  • ✅ Compatibilidade com .NET 9.0
  • ✅ Nullable reference types habilitado

📦 Instalação

Via NuGet Package Manager

Install-Package FastTechFoodsOrder.Shared

Via .NET CLI

dotnet add package FastTechFoodsOrder.Shared

Via PackageReference

<PackageReference Include="FastTechFoodsOrder.Shared" Version="2.6.0" />

🛠️ Uso

Enums de Status

using FastTechFoodsOrder.Shared.Enums;

// Usando o enum OrderStatus
var status = OrderStatus.Pending;
var nextStatus = OrderStatus.Accepted;

Utilitários de Status

using FastTechFoodsOrder.Shared.Utils;
using FastTechFoodsOrder.Shared.Enums;

// Conversão de string para enum
var status = OrderStatusUtils.ConvertStringToStatus("pending");

// Conversão de enum para string
var statusString = OrderStatusUtils.ConvertStatusToString(OrderStatus.Accepted);

// Validação de status
bool isValid = OrderStatusUtils.IsValidStatus("preparing");

// Verificação de transição válida
bool canTransition = OrderStatusUtils.IsValidStatusTransition(
    OrderStatus.Pending, 
    OrderStatus.Accepted
);

// Obter descrição amigável
string description = OrderStatusUtils.GetStatusDescription(OrderStatus.Preparing);
// Retorna: "Em Preparação"

// Obter todos os status válidos
var allStatuses = OrderStatusUtils.GetAllValidStatuses();

Mensagens de Eventos

using FastTechFoodsOrder.Shared.Integration.Messages;

// Criação de pedido
var orderCreated = new OrderCreatedMessage
{
    OrderId = "123",
    EventType = "OrderCreated",
    EventDate = DateTime.UtcNow,
    CustomerId = "customer-123",
    Status = "pending",
    Items = new List<OrderItemMessage>
    {
        new OrderItemMessage
        {
            ProductId = "prod-1",
            Name = "Hambúrguer",
            Quantity = 2,
            UnitPrice = 15.99m
        }
    },
    DeliveryMethod = "delivery",
    Total = 31.98m
};

// Aceitar pedido
var orderAccepted = new OrderAcceptedMessage
{
    OrderId = "123",
    EventType = "OrderAccepted",
    EventDate = DateTime.UtcNow,
    CustomerId = "customer-123",
    Status = "accepted",
    UpdatedBy = "restaurant-staff",
    EstimatedPreparationTime = DateTime.UtcNow.AddMinutes(30)
};

// Cancelar pedido
var orderCancelled = new OrderCancelledMessage
{
    OrderId = "123",
    EventType = "OrderCancelled",
    EventDate = DateTime.UtcNow,
    CustomerId = "customer-123",
    Status = "cancelled",
    CancelReason = "Cliente solicitou cancelamento",
    CancelledBy = "customer",
    CancelledAt = DateTime.UtcNow
};

📁 Estrutura do Projeto

src/
├── Enums/
│   └── OrderStatus.cs              # Enum com os status dos pedidos
├── Integration/
│   └── Messages/
│       └── OrderEventMessage.cs   # Mensagens de eventos de pedidos
├── Utils/
│   └── OrderStatusUtils.cs        # Utilitários para manipulação de status
└── FastTechFoodsOrder.Shared.csproj

📚 API Reference

OrderStatus Enum

Status Descrição Próximos Status Válidos
Pending Pedido pendente Accepted, Cancelled
Accepted Pedido aceito Preparing, Cancelled
Preparing Em preparação Ready, Cancelled
Ready Pronto para entrega Delivered
Cancelled Cancelado (final)
Delivered Entregue (final)

Mensagens de Eventos

Mensagens Base
  • OrderEventMessage - Classe base para todos os eventos
  • OrderCreatedMessage - Evento de criação de pedido
  • OrderItemMessage - Representa um item do pedido
Mensagens de Status
  • OrderPendingMessage - Pedido pendente
  • OrderAcceptedMessage - Pedido aceito
  • OrderPreparingMessage - Pedido em preparação
  • OrderReadyMessage - Pedido pronto
  • OrderDeliveredMessage - Pedido entregue
  • OrderCompletedMessage - Pedido completado
  • OrderCancelledMessage - Pedido cancelado

OrderStatusUtils

Métodos Principais
// Conversões
OrderStatus? ConvertStringToStatus(string? status)
string ConvertStatusToString(OrderStatus status)

// Validações
bool IsValidStatus(string? status)
bool IsValidStatusTransition(OrderStatus currentStatus, OrderStatus newStatus)

// Utilitários
IEnumerable<string> GetAllValidStatuses()
string GetStatusDescription(OrderStatus status)

🤝 Contribuição

  1. Faça o fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto é licenciado sob a MIT License.

🏗️ Desenvolvimento

Pré-requisitos

  • .NET 9.0 SDK
  • Visual Studio 2022 ou VS Code

Build

dotnet build

Testes

dotnet test

Publicação

dotnet pack --configuration Release

📞 Contato

Projeto FastTechFoods - @pos-fiap-gustavo-fabiano

Link do Projeto: https://github.com/pos-fiap-gustavo-fabiano/FastTechFoodsOrderShared


⚡ Feito com ❤️ para o ecossistema FastTechFoods

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.8.0 226 7/30/2025
2.7.0 230 7/27/2025
2.6.0 198 7/27/2025
1.4.0 204 7/30/2025
1.0.2 559 7/21/2025
1.0.1 342 7/20/2025
1.0.0 187 7/19/2025