IBiddingParticipantService
Manages bidding participants in public procurement processes. Namespace:servicesImplementation:
BiddingParticipantService
Dependencies
Entity Framework database context
AutoMapper for DTO conversions
File upload service for IIS
SendGrid email service for notifications
Methods
GetAll
Retrieves all bidding participants with related Master data.Collection of all participants with included Master relationship
GetById
Retrieves a participant by ID.Participant identifier
Participant entity with Master navigation property loaded
GetByRef
Retrieves a participant by their unique reference GUID.GUID reference code (converted internally)
Participant matching the reference code
Create
Registers a new bidding participant with proposal file and email notifications.Participant data
DuplicaIdentificationOrNit
Validates that an identification/NIT is unique within a specific announcement.ID or tax number to check
Announcement/convocatoria ID
true if duplicate exists, false if uniqueDeleteConfirmed
Removes a participant and their uploaded proposal file.Participant ID to delete
IBlogService
Manages blog posts and news articles. Namespace:servicesImplementation:
BlogService
Dependencies
Database context
AutoMapper instance
URL slug generation service
Image upload handler
Methods
GetAll
Retrieves all blog posts ordered by creation date.Blog entries (Master entities where Blog = true) ordered newest first
LimitHome
Retrieves the 3 most recent blog posts for homepage display.Top 3 newest blog posts
GetById (int)
Retrieves a blog post by numeric ID.Blog post identifier
GetById (string)
Retrieves a blog post by URL slug.URL-friendly blog identifier
Create
Creates a new blog post with cover image.Blog post data
Edit
Updates an existing blog post.Blog post ID
Updated content
If new cover image provided, replaces existing. Otherwise, retains current image.
DuplicaName
Checks if a blog name already exists.Blog name to validate
DeleteConfirmed
Deletes a blog post and its cover image.Blog post ID
ICategoryService
Manages service categories. Namespace:servicesImplementation:
CategoryService
Methods
GetAll
Retrieves all service categories.GetById (int)
Retrieves category by numeric ID.GetById (string)
Retrieves category by URL-friendly name.URL slug of category
Create
Creates a new service category.Category data with cover image
Edit
Updates a category.Category ID
Updated data
Updates DateUpdate timestamp automatically
CategoryExists
Validates category existence.DuplicaName
Checks for duplicate category names.IDocumentService
Manages legal documents with multiple file attachments. Namespace:servicesImplementation:
DocumentService
Dependencies
File upload service
URL formatting service
Methods
GetAll
Retrieves all documents with their file attachments.Documents ordered by creation date (newest first) with FileDocument collection loaded
GetById (int)
Retrieves document by ID.Document identifier
Document with FileDocument collection
GetById (string)
Retrieves document by URL name.URL-friendly document name
Create
Creates a document with multiple file attachments using database transaction.Document metadata and files
FilesDocuments
Retrieves all file documents.DeleteConfirmed
Deletes a document and all associated files using transaction.Document ID
DocumentExists
Validates document existence.DuplicaName
Checks for duplicate document names.Common Service Utilities
IFormatStringUrl
Converts text to URL-friendly slugs. Example transformations:- “Acueducto y Alcantarillado” → “acueducto-y-alcantarillado”
- “PQRSD 2026” → “pqrsd-2026”
- “Noticias: Nueva Obra” → “noticias-nueva-obra”
IUploadedFileIIS
Handles file operations on IIS server. Storage locations:blog/- Blog cover imagescategories/- Category imagesfilesBiddingParticipant/- Proposal PDFsfilesDocuments/- Legal document files
IEmailSendGrid
Sends emails via SendGrid API.- Bidding participant confirmations
- PQRSD submission receipts
- Admin notifications
Service Layer Patterns
Dependency Injection
All services are registered inStartup.cs and injected via constructor:
AutoMapper Usage
DTOs are mapped to entities and vice versa:Error Handling
Services with complex operations use transactions:Async/Await
All database operations are asynchronous for better performance.INacionLicitanteService
Manages public bidding announcements (Licitaciones) with document attachments. Namespace:servicesImplementation:
NacionLicitanteService
Dependencies
Entity Framework database context
AutoMapper for DTO conversions
URL slug generation service
File upload service for IIS
Methods
GetAll
Retrieves all bidding announcements.Collection where
NacionLicitante == trueGetById (int)
Retrieves announcement by ID with file documents.Announcement identifier
Master entity with
FileDocument collection includedGetById (string)
Retrieves announcement by URL slug.URL-friendly identifier
Details
Retrieves announcement details as DTO.Create
Creates new bidding announcement with cover image and optional file attachments using transaction.Announcement data
FilesDocuments
Retrieves all file documents in system.All FileDocument records
DelatedDocuments
Retrieves documents associated with specific announcement.Master/announcement ID
Documents where
MasterId == idDeleteConfirmed
Removes announcement with complete cascade deletion using transaction.Announcement ID to delete
NacionLicitantegExists
Validates announcement existence.DuplicaName
Checks for duplicate announcement names.Name to validate
IBrigadeService
Manages community brigade events. Namespace:servicesImplementation:
BrigadeService
Dependencies
Database context
AutoMapper instance
URL slug generator
File upload handler
Methods
GetAll
Retrieves all brigade events ordered by creation date.Brigade entries (Master where
Brigade == true) ordered newest firstGetById (int)
Retrieves brigade by numeric ID.Brigade identifier
GetById (string)
Retrieves brigade by URL slug.URL-friendly identifier
Details
Retrieves brigade details as DTO.Create
Creates new brigade event with cover image.Brigade data including event date
DeleteConfirmed
Removes brigade and cover image.Brigade ID
Deletes cover page from
brigade folder, then removes Master recordBrigadeExists
Validates brigade existence.DuplicaName
Checks for duplicate brigade names.IEmployeeService
Manages employee records and staff directory. Namespace:servicesImplementation:
EmployeeService
Dependencies
Database context
AutoMapper instance
File upload service
Methods
GetAll
Retrieves all employees ordered by creation date.All employee records ordered newest first
GetById
Retrieves employee by ID.Employee identifier
Details
Retrieves employee details as DTO.Create
Creates new employee record with photo.Employee data
DeleteConfirmed
Removes employee and photo.Employee ID
Deletes photo from
employees folder, then removes Employee recordIProductService
Manages service products offered by the organization. Namespace:servicesImplementation:
ProductService
Dependencies
Database context
AutoMapper instance
URL slug generator
Methods
GetAll
Retrieves all products ordered by creation date.All products ordered newest first
GetById
Retrieves product by numeric ID.Details (int)
Retrieves product details by ID.Details (string)
Retrieves product details by URL slug.URL-friendly product identifier
Create
Creates new product/service.Product data
DeleteConfirmed
Removes product record.ProductExists
Validates product existence.DuplicaName
Checks for duplicate product names.IPQRSDService
Manages PQRSD submissions (Petitions, Complaints, Claims, Suggestions, Congratulations) with email notifications. Namespace:servicesImplementation:
PQRSDService
Dependencies
Database context
AutoMapper instance
URL formatter
File upload service
SendGrid email service
Access to web root for email templates
Methods
GetAll
Retrieves all PQRSD submissions.All PQRSD records
GetById
Retrieves PQRSD by unique identifier.PQRSD identifier
Details
Retrieves PQRSD details as DTO.Create
Creates new PQRSD submission and sends email notifications.PQRSD data
Review
Administrative response to PQRSD submission.PQRSD identifier
Admin response data
DeleteConfirmed
Removes PQRSD submission.PQRSD identifier
Service Utilities Detail
File Storage Folders
Bidding announcement cover images
Brigade event cover images
Employee photos
PDF attachments for announcements and documents
PQRSD file attachments (currently unused)
Email Templates
Email templates are stored in/emailTemplete/ directory:
Transaction Management
Services that handle complex multi-step operations use database transactions:- NacionLicitanteService.Create
- NacionLicitanteService.DeleteConfirmed