@@ -8,86 +8,130 @@ using System.Text.RegularExpressions;
namespace CompanyManagement.Infrastructure.Excel.InstitutionContract ;
// Enum برای تعریف ستونهای موجود
public enum ExcelColumnType
{
RowNumber , // ردیف
PhysicalContract , // قرارداد فیزیکی
ContractNo , // شماره قرارداد
Representative , // معرف
ContractingPartyName , // طرف حساب
ArchiveCode , // شماره کارفرما
EmployerName , // کارفرما
WorkshopName , // کارگاهها (چندخطی)
WorkshopCount , // تعداد کارگاه
EmployeeCount , // مجموع پرسنل
ContractStartDate , // شروع قرارداد
ContractEndDate , // پایان قرارداد
InstallmentAmount , // مبلغ قسط
ContractAmount , // مبلغ قرارداد
FinancialStatus // وضعیت مالی
}
// کلاس کانفیگ برای تنظیم ستونهای نمایشی
public class ExcelColumnConfig
{
public List < ExcelColumnType > VisibleColumns { get ; set ; }
public ExcelColumnConfig ( )
{
// فعلاً تمام ستونها فعال هستند
VisibleColumns = new List < ExcelColumnType >
{
ExcelColumnType . RowNumber ,
ExcelColumnType . PhysicalContract ,
ExcelColumnType . ContractNo ,
ExcelColumnType . Representative ,
ExcelColumnType . ContractingPartyName ,
ExcelColumnType . ArchiveCode ,
ExcelColumnType . EmployerName ,
ExcelColumnType . WorkshopName ,
ExcelColumnType . WorkshopCount ,
ExcelColumnType . EmployeeCount ,
ExcelColumnType . ContractStartDate ,
ExcelColumnType . ContractEndDate ,
ExcelColumnType . InstallmentAmount ,
ExcelColumnType . ContractAmount ,
ExcelColumnType . FinancialStatus
} ;
}
}
public class InstitutionContractExcelGenerator
{
private static ExcelColumnConfig _columnConfig = new ExcelColumnConfig ( ) ;
public static byte [ ] GenerateExcel ( List < InstitutionContractViewModel > institutionC ontractViewModels)
public static byte [ ] GenerateExcel ( List < InstitutionContractExcel ViewModel > c ontractViewModels)
{
ExcelPackage . License . SetNonCommercialOrganization ( "Gozareshgir Noncommercial organization" ) ;
using var package = new ExcelPackage ( ) ;
var allWorksheet = package . Workbook . Worksheets . Add ( "همه" ) ;
var blueWorksheet = package . Workbook . Worksheets . Add ( "آبی" ) ;
blueWorksheet . TabColor = Color . LightBlue ;
var grayWorksheet = package . Workbook . Worksheets . Add ( "خاکستری" ) ;
grayWorksheet . TabColor = Color . LightGray ;
var redWorksheet = package . Workbook . Worksheets . Add ( "قرمز" ) ;
redWorksheet . TabColor = Color . LightCoral ;
var purpleWorksheet = package . Workbook . Worksheets . Add ( "بنفش" ) ;
purpleWorksheet . TabColor = Color . MediumPurple ;
var blackWorksheet = package . Workbook . Worksheets . Add ( "مشکی" ) ;
blackWorksheet . TabColor = Color . DimGray ;
var yellowWorksheet = package . Workbook . Worksheets . Add ( "زرد" ) ;
yellowWorksheet . TabColor = Color . Yellow ;
var whiteWorksheet = package . Workbook . Worksheets . Add ( "سفید" ) ;
whiteWorksheet . TabColor = Color . White ;
CreateExcelSheet ( institutionContractViewModels , allWorksheet ) ;
var blueContracts = institutionContractViewModels . Where ( x = > x . ExpireColor = = "blue" ) . ToList ( ) ;
CreateExcelSheet ( blueContracts , blueWorksheet ) ;
institutionContractViewModels = institutionContractViewModels . Except ( blueContracts ) . ToList ( ) ;
var grayContracts = institutionContractViewModels . Where ( x = > x . IsContractingPartyBlock = = "true" ) . ToList ( ) ;
CreateExcelSheet ( grayContracts , grayWorksheet ) ;
institutionContractViewModels = institutionContractViewModels . Except ( grayContracts ) . ToList ( ) ;
var redContracts = institutionContractViewModels . Where ( x = > x . ExpireColor = = "red" ) . ToList ( ) ;
CreateExcelSheet ( redContracts , redWorksheet ) ;
institutionContractViewModels = institutionContractViewModels . Except ( redContracts ) . ToList ( ) ;
var purpleContracts = institutionContractViewModels . Where ( x = > x . ExpireColor = = "purple" ) . ToList ( ) ;
CreateExcelSheet ( purpleContracts , purpleWorksheet ) ;
institutionContractViewModels = institutionContractViewModels . Except ( purpleContracts ) . ToList ( ) ;
var blackContracts = institutionContractViewModels . Where ( x = > x . ExpireColor = = "black" ) . ToList ( ) ;
CreateExcelSheet ( blackContracts , blackWorksheet ) ;
institutionContractViewModels = institutionContractViewModels . Except ( blackContracts ) . ToList ( ) ;
var yellowContracts = institutionContractViewModels
. Where ( x = > string . IsNullOrWhiteSpace ( x . ExpireColor ) & & x . WorkshopCount = = "0" ) . ToList ( ) ;
CreateExcelSheet ( yellowContracts , yellowWorksheet ) ;
institutionContractViewModels = institutionContractViewModels . Except ( yellowContracts ) . ToList ( ) ;
var otherContracts = institutionContractViewModels ;
CreateExcelSheet ( otherContracts , whiteWorksheet ) ;
// ایجاد شیت برای هر تب با دادههای مربوطه
foreach ( var viewModel in contractViewModels )
{
var worksheet = CreateWorksheet ( package , viewModel . Tab ) ;
CreateExcelSheet ( viewModel . GetInstitutionContractListItemsViewModels ? ? new List < GetInstitutionContractListItemsViewModel > ( ) , worksheet ) ;
}
return package . GetAsByteArray ( ) ;
}
private static void CreateExcelSheet ( List < InstitutionContractViewModel > institutionContractViewModels , ExcelWorksheet worksheet )
/// <summary>
/// ایجاد شیت بر اساس نوع تب
/// </summary>
private static ExcelWorksheet CreateWorksheet ( ExcelPackage package , InstitutionContractListStatus ? status )
{
// Headers
worksheet . Cells [ 1 , 1 ] . Value = "شماره قرارداد" ;
worksheet . Cells [ 1 , 2 ] . Value = "طرف حساب" ;
w orksheet. Cells [ 1 , 3 ] . Value = "شماره کارفرما" ;
worksheet . Cells [ 1 , 4 ] . Value = "کارفرما ه ا " ;
worksheet . Cells [ 1 , 5 ] . Value = "کارگاه ه ا " ;
w orksheet. Cells [ 1 , 6 ] . Value = "مجبوع پرسنل" ;
worksheet . Cells [ 1 , 7 ] . Value = "شروع قرارداد" ;
worksheet . Cells [ 1 , 8 ] . Value = "پایان قرارداد" ;
w orksheet. Cells [ 1 , 9 ] . Value = "مبلغ قرارداد (بدون کارگاه)" ;
worksheet . Cells [ 1 , 10 ] . Value = "مبلغ قرارداد" ;
worksheet . Cells [ 1 , 11 ] . Value = "وضعیت مالی" ;
return status switch
{
InstitutionContractListStatus . DeactiveWithDebt = >
CreateColoredW orksheet( package , "غیرفعال دارای بدهی" , Color . LightBlue ) ,
InstitutionContractListStatus . Deactive = >
CreateColoredW orksheet( package , "غیرفعال" , Color . LightGray ) ,
InstitutionContractListStatus . PendingForRenewal = >
CreateColoredW orksheet( package , "در انتظار تمدید" , Color . LightCoral ) ,
InstitutionContractListStatus . Free = >
CreateColoredWorksheet ( package , "بنفش" , Color . MediumPurple ) ,
InstitutionContractListStatus . Block = >
CreateColoredWorksheet ( package , "بلاک" , Color . DimGray ) ,
InstitutionContractListStatus . WithoutWorkshop = >
CreateColoredWorksheet ( package , "بدون کارگاه" , Color . Yellow ) ,
InstitutionContractListStatus . Active = >
CreateColoredWorksheet ( package , "فعال" , Color . White ) ,
InstitutionContractListStatus . PendingForVerify = >
CreateColoredWorksheet ( package , "در انتظار تایید" , Color . OrangeRed ) ,
null = > CreateColoredWorksheet ( package , "کل قرارداد ه ا " , Color . White ) ,
_ = > throw new ArgumentOutOfRangeException ( nameof ( status ) , status , null )
} ;
}
using ( var range = worksheet . Cells [ 1 , 1 , 1 , 11 ] )
/// <summary>
/// ایجاد شیت با رنگ تب
/// </summary>
private static ExcelWorksheet CreateColoredWorksheet ( ExcelPackage package , string sheetName , Color tabColor )
{
var worksheet = package . Workbook . Worksheets . Add ( sheetName ) ;
worksheet . TabColor = tabColor ;
return worksheet ;
}
private static void CreateExcelSheet ( List < GetInstitutionContractListItemsViewModel > contractItems , ExcelWorksheet worksheet )
{
// دریافت نقشه ستونهای مرئی
var visibleColumnIndices = GetVisibleColumnIndices ( ) ;
int columnCount = visibleColumnIndices . Count ;
// تنظیم Headers
SetupHeaders ( worksheet , visibleColumnIndices , columnCount ) ;
using ( var range = worksheet . Cells [ 1 , 1 , 1 , columnCount ] )
{
range . Style . HorizontalAlignment = ExcelHorizontalAlignment . Center ;
range . Style . VerticalAlignment = ExcelVerticalAlignment . Center ;
@@ -110,30 +154,35 @@ public class InstitutionContractExcelGenerator
int row = 2 ;
for ( int i = 0 ; i < institutionContractViewModel s. Count ; i + + )
for ( int i = 0 ; i < contractItem s. Count ; i + + )
{
var contract = institutionContractViewModel s[ i ] ;
var employers = contract . EmployerViewModel s ? . ToList ( ) ? ? new ( ) ;
var workshops = contract . WorkshopViewModel s ? . ToList ( ) ? ? new ( ) ;
var contract = contractItem s[ i ] ;
var employers = contract . EmployerName s ? . ToList ( ) ? ? new ( ) ;
var workshops = contract . WorkshopName s ? . ToList ( ) ? ? new ( ) ;
int maxRows = Math . Max ( employers . Count , workshops . Count ) ;
maxRows = Math . Max ( 1 , maxRows ) ;
int maxRows = 1 ; // هر قرارداد فقط یک ردیف؛ نیازی به مرج عمودی نیست
int startRow = row ;
int endRow = row + maxRows - 1 ;
// 🎨 دریافت رنگ پسزمینه از مقدار رنگ موجود در داده
string colorName = contract . ExpireColor . ToLower ( ) ;
var fillColor = GetColorByName ( colorName , contract . WorkshopCount , contract . IsContractingPartyBlock ) ;
// 🎨 دریافت رنگ پسزمینه بر اساس وضعیت قرار داد
var fillColor = GetColorByStatus ( contract . ListStatus , contract . WorkshopsCount ) ;
for ( int j = 0 ; j < maxRows ; j + + )
{
int currentRow = row + j ;
worksheet . Cells [ currentRow , 4 ] . Value = j < employers . Count ? employers [ j ] . FullName : null ;
worksheet . Cells [ currentRow , 5 ] . Value = j < workshops . Count ? workshops [ j ] . WorkshopFullName : null ;
// پر کردن ستونهای employer و workshop
var employerColIndex = GetColumnIndexForType ( ExcelColumnType . EmployerName , visibleColumnIndices ) ;
var workshopColIndex = GetColumnIndexForType ( ExcelColumnType . WorkshopName , visibleColumnIndices ) ;
for ( int col = 1 ; col < = 11 ; col + + )
i f ( employerColIndex > 0 )
worksheet . Cells [ currentRow , employerColIndex ] . Value = j < employers . Count ? employers [ j ] : null ;
if ( workshopColIndex > 0 )
worksheet . Cells [ currentRow , workshopColIndex ] . Value = j < workshops . Count ? workshops [ j ] : null ;
for ( int col = 1 ; col < = columnCount ; col + + )
{
var cell = worksheet . Cells [ currentRow , col ] ;
@@ -154,109 +203,226 @@ public class InstitutionContractExcelGenerator
}
// 🧱 مرج و مقداردهی ستونهای اصلی
worksheet . Cells [ startRow , 1 , endRow , 1 ] . Merge = true ;
worksheet . Cells [ startRow , 1 ] . Value = contract . ContractNo ;
worksheet . Cells [ startRow , 2 , endRow , 2 ] . Merge = true ;
worksheet . Cells [ startRow , 2 ] . Value = contract . ContractingPartyName ;
worksheet . Cells [ startRow , 3 , endRow , 3 ] . Merge = true ;
worksheet . Cells [ startRow , 3 ] . Value = contract . ArchiveCode ;
worksheet . Cells [ startRow , 6 , endRow , 6 ] . Merge = true ;
worksheet . Cells [ startRow , 6 ] . Value = contract . EmployeeCount ;
worksheet . Cells [ startRow , 7 , endRow , 7 ] . Merge = true ;
worksheet . Cells [ startRow , 7 ] . Value = contract . ContractStartFa ;
worksheet . Cells [ startRow , 8 , endRow , 8 ] . Merge = true ;
worksheet . Cells [ startRow , 8 ] . Value = contract . ContractEndFa ;
worksheet . Cells [ startRow , 9 , endRow , 9 ] . Merge = true ;
var contractWithoutWorkshopAmountCell = worksheet . Cells [ startRow , 9 ] ;
contractWithoutWorkshopAmountCell . Value = contract . WorkshopCount = = "0" ? MoneyToDouble ( contract . ContractAmount ) : "" ;
contractWithoutWorkshopAmountCell . Style . Numberformat . Format = "#,##0" ;
worksheet . Cells [ startRow , 10 , endRow , 10 ] . Merge = true ;
var contractAmountCell = worksheet . Cells [ startRow , 10 ] ;
contractAmountCell . Value = contract . WorkshopCount ! = "0" ? MoneyToDouble ( contract . ContractAmount ) : "" ;
contractAmountCell . Style . Numberformat . Format = "#,##0" ;
worksheet . Cells [ startRow , 11 , endRow , 11 ] . Merge = true ;
var balance = MoneyToDouble ( contract . BalanceStr ) ;
var balanceCell = worksheet . Cells [ startRow , 11 ] ;
balanceCell . Value = balance ;
balanceCell . Style . Numberformat . Format = "#,##0" ;
if ( balance > 0 )
balanceCell . Style . Font . Color . SetColor ( Color . Red ) ;
else if ( balance < 0 )
balanceCell . Style . Font . Color . SetColor ( Color . Green ) ;
FillColumnData ( worksheet , contract , startRow , endRow , visibleColumnIndices ) ;
// 📦 بوردر ضخیم خارجی برای هر سطر
var boldRange = worksheet . Cells [ startRow , 1 , endRow , 11 ] ;
var boldRange = worksheet . Cells [ startRow , 1 , endRow , columnCount ] ;
boldRange . Style . Border . BorderAround ( ExcelBorderStyle . Medium ) ;
row + = maxRows ;
}
SetupPrintSettings ( worksheet , visibleColumnIndices , columnCount ) ;
}
/// <summary>
/// دریافت فهرست ستونهای مرئی بر اساس کانفیگ
/// </summary>
private static List < ExcelColumnType > GetVisibleColumnIndices ( )
{
return _columnConfig . VisibleColumns ;
}
/// <summary>
/// دریافت شماره ستون برای یک نوع ستون خاص
/// </summary>
private static int GetColumnIndexForType ( ExcelColumnType columnType , List < ExcelColumnType > visibleColumns )
{
var index = visibleColumns . IndexOf ( columnType ) ;
return index > = 0 ? index + 1 : 0 ; // 1-based indexing
}
/// <summary>
/// دریافت متن header برای یک نوع ستون
/// </summary>
private static string GetColumnHeader ( ExcelColumnType columnType )
{
return columnType switch
{
ExcelColumnType . RowNumber = > "ردیف" ,
ExcelColumnType . PhysicalContract = > "قرارداد فیزیکی" ,
ExcelColumnType . ContractNo = > "شماره قرارداد" ,
ExcelColumnType . Representative = > "معرف" ,
ExcelColumnType . ContractingPartyName = > "طرف حساب" ,
ExcelColumnType . ArchiveCode = > "شماره کارفرما" ,
ExcelColumnType . EmployerName = > "کارفرما" ,
ExcelColumnType . WorkshopName = > "کارگاهها" ,
ExcelColumnType . WorkshopCount = > "تعداد کارگاه" ,
ExcelColumnType . EmployeeCount = > "مجموع پرسنل" ,
ExcelColumnType . ContractStartDate = > "شروع قرارداد" ,
ExcelColumnType . ContractEndDate = > "پایان قرارداد" ,
ExcelColumnType . InstallmentAmount = > "مبلغ قسط" ,
ExcelColumnType . ContractAmount = > "مبلغ قرارداد" ,
ExcelColumnType . FinancialStatus = > "وضعیت مالی" ,
_ = > ""
} ;
}
/// <summary>
/// تنظیم Header ه ا ی ستونها
/// </summary>
private static void SetupHeaders ( ExcelWorksheet worksheet , List < ExcelColumnType > visibleColumns , int columnCount )
{
for ( int i = 0 ; i < visibleColumns . Count ; i + + )
{
worksheet . Cells [ 1 , i + 1 ] . Value = GetColumnHeader ( visibleColumns [ i ] ) ;
}
}
/// <summary>
/// پر کردن دادههای ستونها برای یک قرارداد
/// </summary>
private static void FillColumnData ( ExcelWorksheet worksheet , GetInstitutionContractListItemsViewModel contract , int startRow , int endRow , List < ExcelColumnType > visibleColumns )
{
for ( int i = 0 ; i < visibleColumns . Count ; i + + )
{
int columnIndex = i + 1 ; // 1-based indexing
var columnType = visibleColumns [ i ] ;
// Merge cells for non-repeating columns
worksheet . Cells [ startRow , columnIndex , endRow , columnIndex ] . Merge = true ;
var cell = worksheet . Cells [ startRow , columnIndex ] ;
switch ( columnType )
{
case ExcelColumnType . RowNumber :
// TODO: مقدار ردیف رو از user input دریافت کن
break ;
case ExcelColumnType . PhysicalContract :
// TODO: مقدار قرارداد فیزیکی رو دریافت کن
break ;
case ExcelColumnType . ContractNo :
cell . Value = contract . ContractNo ;
break ;
case ExcelColumnType . Representative :
cell . Value = contract . RepresentativeName ;
break ;
case ExcelColumnType . ContractingPartyName :
cell . Value = contract . ContractingPartyName ;
break ;
case ExcelColumnType . ArchiveCode :
cell . Value = contract . ArchiveNo ;
break ;
case ExcelColumnType . EmployerName :
// این ستون چندخطی است و داخل loop پر میشود
break ;
case ExcelColumnType . WorkshopName :
// این ستون چندخطی است و داخل loop پر میشود
break ;
case ExcelColumnType . WorkshopCount :
cell . Value = contract . WorkshopsCount ;
break ;
case ExcelColumnType . EmployeeCount :
cell . Value = contract . EmployeesCount ;
break ;
case ExcelColumnType . ContractStartDate :
cell . Value = contract . ContractStartFa ;
break ;
case ExcelColumnType . ContractEndDate :
cell . Value = contract . ContractEndFa ;
break ;
case ExcelColumnType . InstallmentAmount :
cell . Value = contract . InstallmentAmount ;
cell . Style . Numberformat . Format = "#,##0" ;
break ;
case ExcelColumnType . ContractAmount :
cell . Value = contract . ContractAmount ;
cell . Style . Numberformat . Format = "#,##0" ;
break ;
case ExcelColumnType . FinancialStatus :
cell . Value = contract . Balance ;
cell . Style . Numberformat . Format = "#,##0" ;
if ( contract . Balance > 0 )
cell . Style . Font . Color . SetColor ( Color . Red ) ;
else if ( contract . Balance < 0 )
cell . Style . Font . Color . SetColor ( Color . Green ) ;
break ;
}
}
}
/// <summary>
/// تنظیم تنظیمات چاپ و عرض ستونها
/// </summary>
private static void SetupPrintSettings ( ExcelWorksheet worksheet , List < ExcelColumnType > visibleColumns , int columnCount )
{
worksheet . PrinterSettings . PaperSize = ePaperSize . A4 ;
worksheet . PrinterSettings . Orientation = eOrientation . Landscape ;
worksheet . PrinterSettings . FitToPage = true ;
worksheet . PrinterSettings . FitToWidth = 1 ;
worksheet . PrinterSettings . FitToHeight = 0 ;
worksheet . PrinterSettings . Scale = 85 ;
int contractNoCol = 1 ;
int contractingPartyNameCol = 2 ;
int archiveNoCol = 3 ;
int employersCol = 4 ;
int workshopsCol = 5 ;
int employeeCountCol = 6 ;
int startContractCol = 7 ;
int endContractCol = 8 ;
int contractWithoutWorkshopAmountCol = 9 ;
int contractAmountCol = 10 ;
int balanceCol = 11 ;
worksheet . Columns [ contractNoCol ] . Width = 17 ;
worksheet . Columns [ contractingPartyNameCol ] . Width = 40 ;
worksheet . Columns [ archiveNoCol ] . Width = 10 ;
worksheet . Columns [ employersCol ] . Width = 40 ;
worksheet . Columns [ workshopsCol ] . Width = 45 ;
worksheet . Columns [ employeeCountCol ] . Width = 12 ;
worksheet . Columns [ startContractCol ] . Width = 12 ;
worksheet . Columns [ endContractCol ] . Width = 12 ;
worksheet . Columns [ contractWithoutWorkshopAmountCol ] . Width = 18 ;
worksheet . Columns [ contractAmountCol ] . Width = 12 ;
worksheet . Columns [ balanceCol ] . Width = 12 ;
// تنظیم عرض ستونها بر اساس نوع ستون
for ( int i = 0 ; i < visibleColumns . Count ; i + + )
{
int columnIndex = i + 1 ;
worksheet . Columns [ columnIndex ] . Width = GetColumnWidth ( visibleColumns [ i ] ) ;
}
worksheet . View . RightToLeft = true ; // فارسی
//worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
}
/// <summary>
/// دریافت عرض ستون پیشفرض برای هر نوع ستون
/// </summary>
private static double GetColumnWidth ( ExcelColumnType columnType )
{
return columnType switch
{
ExcelColumnType . RowNumber = > 8 ,
ExcelColumnType . PhysicalContract = > 15 ,
ExcelColumnType . ContractNo = > 17 ,
ExcelColumnType . Representative = > 15 ,
ExcelColumnType . ContractingPartyName = > 40 ,
ExcelColumnType . ArchiveCode = > 10 ,
ExcelColumnType . EmployerName = > 40 ,
ExcelColumnType . WorkshopName = > 45 ,
ExcelColumnType . WorkshopCount = > 12 ,
ExcelColumnType . EmployeeCount = > 12 ,
ExcelColumnType . ContractStartDate = > 12 ,
ExcelColumnType . ContractEndDate = > 12 ,
ExcelColumnType . InstallmentAmount = > 15 ,
ExcelColumnType . ContractAmount = > 15 ,
ExcelColumnType . FinancialStatus = > 12 ,
_ = > 12
} ;
}
private static double MoneyToDouble ( string value )
{
Console . WriteLine ( value ) ;
if ( string . IsNullOrEmpty ( value ) )
return 0 ;
var min = value . Length > 1 ? value . Substring ( 0 , 2 ) : "" ;
var test = min = = "\u200e\u2212" ? value . MoneyToDouble ( ) * - 1 : value . MoneyToDouble ( ) ;
Console . WriteLine ( test ) ;
return test ;
}
private static Color GetColorByName ( string name , string workshopCount , string IsContractingPartyBlock )
/// <summary>
/// دریافت رنگ بر اساس وضعیت قرارداد
/// </summary>
private static Color GetColorByStatus ( InstitutionContractListStatus status , int workshopsCount )
{
return name switch
return status switch
{
"blue" = > Color . LightBlue ,
_ when IsContractingPartyBlock = = "true" = > Color . LightGray ,
"red" = > Color . LightCoral ,
"purple" = > Color . MediumPurple ,
"black" = > Color . DimGray ,
var n when string . IsNullOrWhiteSpace ( n ) & & workshopCount = = "0" = > Color . Yellow ,
InstitutionContractListStatus . DeactiveWithDebt = > Color . LightBlue ,
InstitutionContractListStatus . Deactive = > Color . LightGray ,
InstitutionContractListStatus . PendingForRenewal = > Color . LightCoral ,
InstitutionContractListStatus . Free = > Color . MediumPurple ,
InstitutionContractListStatus . Block = > Color . DimGray ,
InstitutionContractListStatus . WithoutWorkshop = > Color . Yellow ,
InstitutionContractListStatus . Active = > Color . White ,
_ = > Color . White
} ;
}
}
}
public class InstitutionContractExcelViewModel
{
public InstitutionContractListStatus ? Tab { get ; set ; }
public List < GetInstitutionContractListItemsViewModel > GetInstitutionContractListItemsViewModels { get ; set ; }
}