Added Inventory module and changed the view model for market feature plan API
This commit is contained in:
parent
cf240ae626
commit
6f6292b167
9
Marco.Pms.Model/Dtos/Tenant/InventoryModuleDetailsDto.cs
Normal file
9
Marco.Pms.Model/Dtos/Tenant/InventoryModuleDetailsDto.cs
Normal file
@ -0,0 +1,9 @@
|
||||
namespace Marco.Pms.Model.Dtos.Tenant
|
||||
{
|
||||
public class InventoryModuleDetailsDto
|
||||
{
|
||||
public List<Guid>? FeatureId { get; set; }
|
||||
public string Name { get; set; } = "Expense Management";
|
||||
public bool Enabled { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,6 @@
|
||||
namespace Marco.Pms.Model.Dtos.Tenant
|
||||
using Marco.Pms.Model.TenantModels.MongoDBModel;
|
||||
|
||||
namespace Marco.Pms.Model.Dtos.Tenant
|
||||
{
|
||||
public class ModulesDetailsDto
|
||||
{
|
||||
@ -6,5 +8,6 @@
|
||||
public AttendanceDetailsDto? Attendance { get; set; }
|
||||
public DirectoryDetailsDto? Directory { get; set; }
|
||||
public ExpenseModuleDetailsDto? Expense { get; set; }
|
||||
public InventoryModuleDetailsDto? Inventory { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
using MongoDB.Bson;
|
||||
using MongoDB.Bson.Serialization.Attributes;
|
||||
|
||||
namespace Marco.Pms.Model.TenantModels.MongoDBModel
|
||||
{
|
||||
public class InventoryModuleDetails
|
||||
{
|
||||
[BsonId]
|
||||
[BsonRepresentation(BsonType.String)]
|
||||
public Guid Id { get; set; } = Guid.NewGuid();
|
||||
|
||||
public string? Name { get; set; }
|
||||
|
||||
[BsonRepresentation(BsonType.String)]
|
||||
public List<Guid> FeatureId { get; set; } = new List<Guid>();
|
||||
public bool Enabled { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@ -12,5 +12,6 @@ namespace Marco.Pms.Model.TenantModels.MongoDBModel
|
||||
public AttendanceDetails? Attendance { get; set; }
|
||||
public DirectoryDetails? Directory { get; set; }
|
||||
public ExpenseModuleDetails? Expense { get; set; }
|
||||
public InventoryModuleDetails? Inventory { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,4 +14,10 @@
|
||||
|
||||
public ICollection<FeaturePermissionVM>? FeaturePermissions { get; set; }
|
||||
}
|
||||
public class BasicFeatureVM
|
||||
{
|
||||
public Guid Id { get; set; } // Unique identifier for the permission
|
||||
public string? Name { get; set; } // Feature name
|
||||
public string? Description { get; set; } // Feature description
|
||||
}
|
||||
}
|
||||
|
||||
15
Marco.Pms.Model/ViewModels/Tenant/AttendanceDetailsVM.cs
Normal file
15
Marco.Pms.Model/ViewModels/Tenant/AttendanceDetailsVM.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
{
|
||||
public class AttendanceDetailsVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public List<BasicFeatureVM>? Features { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public bool ManualEntry { get; set; }
|
||||
public bool LocationTracking { get; set; }
|
||||
public bool ShiftManagement { get; set; }
|
||||
}
|
||||
}
|
||||
14
Marco.Pms.Model/ViewModels/Tenant/DirectoryDetailsVM.cs
Normal file
14
Marco.Pms.Model/ViewModels/Tenant/DirectoryDetailsVM.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
{
|
||||
public class DirectoryDetailsVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public List<BasicFeatureVM>? Features { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public int BucketLimit { get; set; }
|
||||
public bool OrganizationChart { get; set; }
|
||||
}
|
||||
}
|
||||
12
Marco.Pms.Model/ViewModels/Tenant/ExpenseModuleDetailsVM.cs
Normal file
12
Marco.Pms.Model/ViewModels/Tenant/ExpenseModuleDetailsVM.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
{
|
||||
public class ExpenseModuleDetailsVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public List<BasicFeatureVM>? Features { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
}
|
||||
}
|
||||
13
Marco.Pms.Model/ViewModels/Tenant/FeatureDetailsVM.cs
Normal file
13
Marco.Pms.Model/ViewModels/Tenant/FeatureDetailsVM.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using Marco.Pms.Model.TenantModels.MongoDBModel;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
{
|
||||
public class FeatureDetailsVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public ModulesDetailsVM? Modules { get; set; }
|
||||
public ReportDetails? Reports { get; set; }
|
||||
public SupportDetails? Supports { get; set; }
|
||||
public List<SubscriptionCheckList>? SubscriptionCheckList { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
{
|
||||
public class InventoryModuleDetailsVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public List<BasicFeatureVM>? Features { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
}
|
||||
}
|
||||
14
Marco.Pms.Model/ViewModels/Tenant/ModulesDetailsVM.cs
Normal file
14
Marco.Pms.Model/ViewModels/Tenant/ModulesDetailsVM.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using Marco.Pms.Model.TenantModels.MongoDBModel;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
{
|
||||
public class ModulesDetailsVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public ProjectManagementDetailsVM? ProjectManagement { get; set; }
|
||||
public AttendanceDetailsVM? Attendance { get; set; }
|
||||
public DirectoryDetailsVM? Directory { get; set; }
|
||||
public ExpenseModuleDetailsVM? Expense { get; set; }
|
||||
public InventoryModuleDetailsVM? Inventory { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
|
||||
namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
{
|
||||
public class ProjectManagementDetailsVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? Name { get; set; }
|
||||
public List<BasicFeatureVM>? Features { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public int MaxProject { get; set; }
|
||||
public double MaxTaskPerProject { get; set; }
|
||||
public bool GanttChart { get; set; }
|
||||
public bool ResourceAllocation { get; set; }
|
||||
}
|
||||
}
|
||||
@ -17,4 +17,18 @@ namespace Marco.Pms.Model.ViewModels.Tenant
|
||||
public FeatureDetails? Features { get; set; }
|
||||
public CurrencyMaster? Currency { get; set; }
|
||||
}
|
||||
|
||||
public class MarketSubscriptionPlanVM
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string? PlanName { get; set; }
|
||||
public string? Description { get; set; }
|
||||
public double? Price { get; set; }
|
||||
public PLAN_FREQUENCY? Frequency { get; set; }
|
||||
public int TrialDays { get; set; }
|
||||
public double MaxUser { get; set; }
|
||||
public double MaxStorage { get; set; }
|
||||
public FeatureDetailsVM? Features { get; set; }
|
||||
public CurrencyMaster? Currency { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
using AutoMapper;
|
||||
using AutoMapper.QueryableExtensions;
|
||||
using FirebaseAdmin.Auth.Multitenancy;
|
||||
using Marco.Pms.DataAccess.Data;
|
||||
using Marco.Pms.Helpers.Utility;
|
||||
using Marco.Pms.Model.Dtos.Util;
|
||||
@ -6,6 +8,7 @@ using Marco.Pms.Model.Mapper;
|
||||
using Marco.Pms.Model.Master;
|
||||
using Marco.Pms.Model.TenantModels;
|
||||
using Marco.Pms.Model.Utilities;
|
||||
using Marco.Pms.Model.ViewModels.Master;
|
||||
using Marco.Pms.Model.ViewModels.Tenant;
|
||||
using Marco.Pms.Services.Helpers;
|
||||
using MarcoBMS.Services.Service;
|
||||
@ -82,7 +85,7 @@ namespace Marco.Pms.Services.Controllers
|
||||
_logger.LogInfo("GetSubscriptionPlanList called with frequency: {Frequency}", frequency ?? PLAN_FREQUENCY.MONTHLY);
|
||||
|
||||
// Initialize the list to store subscription plan view models
|
||||
List<SubscriptionPlanVM> detailsVM = new List<SubscriptionPlanVM>();
|
||||
List<MarketSubscriptionPlanVM> detailsVM = new List<MarketSubscriptionPlanVM>();
|
||||
|
||||
try
|
||||
{
|
||||
@ -104,14 +107,54 @@ namespace Marco.Pms.Services.Controllers
|
||||
|
||||
var subscriptionPlans = await query.ToListAsync();
|
||||
|
||||
var features = await _context.Features
|
||||
.ProjectTo<BasicFeatureVM>(_mapper.ConfigurationProvider)
|
||||
.ToListAsync();
|
||||
|
||||
// Map and fetch feature details for each subscription plan
|
||||
foreach (var subscriptionPlan in subscriptionPlans)
|
||||
{
|
||||
var response = _mapper.Map<SubscriptionPlanVM>(subscriptionPlan);
|
||||
var response = _mapper.Map<MarketSubscriptionPlanVM>(subscriptionPlan);
|
||||
|
||||
try
|
||||
{
|
||||
response.Features = await _featureDetailsHelper.GetFeatureDetails(subscriptionPlan.FeaturesId);
|
||||
var featureDetails = await _featureDetailsHelper.GetFeatureDetails(subscriptionPlan.FeaturesId);
|
||||
|
||||
if (featureDetails == null) continue;
|
||||
|
||||
var attendanceFeatures = featureDetails.Modules?.Attendance?.FeatureId ?? new List<Guid>();
|
||||
var projectManagementFeatures = featureDetails.Modules?.ProjectManagement?.FeatureId ?? new List<Guid>();
|
||||
var directoryFeatures = featureDetails.Modules?.Directory?.FeatureId ?? new List<Guid>();
|
||||
var expenseFeatures = featureDetails.Modules?.Expense?.FeatureId ?? new List<Guid>();
|
||||
var inventoryFeatures = featureDetails.Modules?.Inventory?.FeatureId ?? new List<Guid>();
|
||||
|
||||
var featureDetailsVM = _mapper.Map<FeatureDetailsVM>(featureDetails);
|
||||
|
||||
//var featureDetailsVM = new FeatureDetailsVM
|
||||
//{
|
||||
// Id = featureDetails.Id,
|
||||
// Modules = _mapper.Map<ModulesDetailsVM>(featureDetails.Modules),
|
||||
// Reports = featureDetails.Reports,
|
||||
// Supports = featureDetails.Supports,
|
||||
// SubscriptionCheckList = featureDetails.SubscriptionCheckList
|
||||
//};
|
||||
|
||||
if (featureDetailsVM.Modules?.Attendance != null)
|
||||
featureDetailsVM.Modules.Attendance.Features = features.Where(f => attendanceFeatures.Contains(f.Id)).ToList();
|
||||
|
||||
if (featureDetailsVM.Modules?.ProjectManagement != null)
|
||||
featureDetailsVM.Modules.ProjectManagement.Features = features.Where(f => projectManagementFeatures.Contains(f.Id)).ToList();
|
||||
|
||||
if (featureDetailsVM.Modules?.Directory != null)
|
||||
featureDetailsVM.Modules.Directory.Features = features.Where(f => directoryFeatures.Contains(f.Id)).ToList();
|
||||
|
||||
if (featureDetailsVM.Modules?.Expense != null)
|
||||
featureDetailsVM.Modules.Expense.Features = features.Where(f => expenseFeatures.Contains(f.Id)).ToList();
|
||||
|
||||
if (featureDetailsVM.Modules?.Inventory != null)
|
||||
featureDetailsVM.Modules.Inventory.Features = features.Where(f => inventoryFeatures.Contains(f.Id)).ToList();
|
||||
|
||||
response.Features = featureDetailsVM;
|
||||
}
|
||||
catch (Exception exFeature)
|
||||
{
|
||||
|
||||
@ -100,6 +100,15 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
dest => dest.Description,
|
||||
opt => opt.MapFrom(src => src.Plan != null ? src.Plan.Description : "")
|
||||
);
|
||||
CreateMap<SubscriptionPlanDetails, MarketSubscriptionPlanVM>()
|
||||
.ForMember(
|
||||
dest => dest.PlanName,
|
||||
opt => opt.MapFrom(src => src.Plan != null ? src.Plan.PlanName : "")
|
||||
)
|
||||
.ForMember(
|
||||
dest => dest.Description,
|
||||
opt => opt.MapFrom(src => src.Plan != null ? src.Plan.Description : "")
|
||||
);
|
||||
CreateMap<TenantSubscriptions, SubscriptionPlanDetailsVM>()
|
||||
.ForMember(
|
||||
dest => dest.PlanName,
|
||||
@ -121,14 +130,31 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
CreateMap<SubscriptionPlanDto, SubscriptionPlan>();
|
||||
|
||||
CreateMap<FeatureDetailsDto, FeatureDetails>();
|
||||
CreateMap<FeatureDetails, FeatureDetailsVM>();
|
||||
|
||||
CreateMap<SubscriptionCheckListDto, SubscriptionCheckList>();
|
||||
CreateMap<SupportDetailsDto, SupportDetails>();
|
||||
CreateMap<ReportDetailsDto, ReportDetails>();
|
||||
|
||||
CreateMap<ModulesDetailsDto, ModulesDetails>();
|
||||
CreateMap<ModulesDetails, ModulesDetailsVM>();
|
||||
|
||||
CreateMap<ProjectManagementDetailsDto, ProjectManagementDetails>();
|
||||
CreateMap<ProjectManagementDetails, ProjectManagementDetailsVM>();
|
||||
|
||||
CreateMap<AttendanceDetailsDto, AttendanceDetails>();
|
||||
CreateMap<AttendanceDetails, AttendanceDetailsVM>();
|
||||
|
||||
CreateMap<DirectoryDetailsDto, DirectoryDetails>();
|
||||
CreateMap<DirectoryDetails, DirectoryDetailsVM>();
|
||||
|
||||
CreateMap<ExpenseModuleDetailsDto, ExpenseModuleDetails>();
|
||||
CreateMap<ExpenseModuleDetails, ExpenseModuleDetailsVM>();
|
||||
|
||||
CreateMap<InventoryModuleDetailsDto, InventoryModuleDetails>();
|
||||
CreateMap<InventoryModuleDetails, InventoryModuleDetailsVM>();
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
@ -410,6 +436,7 @@ namespace Marco.Pms.Services.MappingProfiles
|
||||
#region ======================================================= Master =======================================================
|
||||
|
||||
CreateMap<FeaturePermission, FeaturePermissionVM>();
|
||||
CreateMap<Feature, BasicFeatureVM>();
|
||||
|
||||
#region ======================================================= Global Service Master =======================================================
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user