2025-08-06 14:31:52 +06:00
using System ;
using System.Linq ;
using System.Text ;
using Ease.CoreV35.Model ;
using System.Collections.Generic ;
using Ease.CoreV35.Utility ;
using System.IO ;
using System.Drawing ;
using System.Data ;
using System.Reflection ;
using ClosedXML.Excel ;
using System.Text.RegularExpressions ;
using System.Windows.Forms ;
using System.Collections ;
2025-09-22 11:18:05 +06:00
//using DocumentFormat.OpenXml.Spreadsheet;
2025-08-06 14:31:52 +06:00
namespace Payroll.BO
{
//public class SearchParameter
//{
// public const
//}
public enum enumfractionCalculatinType
{
Monthly = 1 ,
Yearly = 2 ,
ThirtyDaysMonth = 3
}
[Serializable]
public class GlobalFunctions
{
private static int _roundofDigit ;
private static string _workingPath ;
public static bool bDataFound = false ;
public static ID _setFormName = ID . FromInteger ( 0 ) ;
public static int SetProgressbarMaxValue = 0 ;
public static long TotalRocordCount = 0 ;
private GlobalFunctions ( )
{
_roundofDigit = - 1 ;
}
#region Service Factory IGlobalFunctionService : IGlobalFunctionService
internal static IGlobalFunctionService Service
{
get { return Services . Factory . CreateService < IGlobalFunctionService > ( typeof ( IGlobalFunctionService ) ) ; }
}
#endregion
public static int RoundOfDigit
{
get
{
return _roundofDigit ;
}
}
public static string workingPath
{
get
{
return _workingPath ;
}
set
{
_workingPath = value ;
}
}
public static string GetHardPasswordConditions ( )
{
StringBuilder sb = new StringBuilder ( ) ;
StringBuilder sb2 = new StringBuilder ( ) ;
StringBuilder sb3 = new StringBuilder ( ) ;
HardPasswordSetup oHardPassword = new SystemInformation ( ) . GetPasswordSetup ( ) ;
if ( oHardPassword . MaxLength > 0 )
sb . Append ( "Maximum Length= " + oHardPassword . MaxLength . ToString ( ) + "," ) ;
if ( oHardPassword . MinLength > 0 )
sb . Append ( "Minimum Length= " + oHardPassword . MinLength . ToString ( ) + "," ) ;
if ( sb . ToString ( ) ! = string . Empty )
sb3 . Append ( "Password must have " + sb . ToString ( ) . Trim ( ',' ) ) ;
if ( oHardPassword . ContainNumber )
sb2 . Append ( "Number," ) ;
if ( oHardPassword . ContainLowercase )
sb2 . Append ( "Lowercase," ) ;
if ( oHardPassword . ContainUppercase )
sb2 . Append ( "Uppercase," ) ;
if ( oHardPassword . ContainSpecialCharacter )
sb2 . Append ( "Special Character," ) ;
if ( oHardPassword . ContainLetter )
sb2 . Append ( "Letter," ) ;
if ( sb . ToString ( ) = = string . Empty )
sb3 . Append ( "Password must contains " + sb2 . ToString ( ) . Trim ( ',' ) ) ;
else
sb3 . Append ( " and contains " + sb2 . ToString ( ) . Trim ( ',' ) ) ;
if ( sb3 . ToString ( ) = = string . Empty )
sb3 . Append ( "Username and Password cannot be same" ) ;
else
sb3 . Append ( " and Username and Password cannot be same" ) ;
return sb3 . ToString ( ) ;
}
public static bool IsHardPassword ( string sUsername , string sPassword )
{
bool bValid = true ;
HardPasswordSetup oHardPassword = new SystemInformation ( ) . GetPasswordSetup ( ) ;
if ( oHardPassword . ContainNumber )
{
if ( ! sPassword . ToCharArray ( ) . Any ( char . IsDigit ) )
bValid = false ;
}
if ( oHardPassword . ContainLetter )
{
if ( ! sPassword . ToCharArray ( ) . Any ( char . IsLetter ) )
bValid = false ;
}
if ( oHardPassword . ContainLowercase )
{
if ( ! sPassword . ToCharArray ( ) . Any ( char . IsLower ) )
bValid = false ;
}
if ( oHardPassword . ContainUppercase )
{
if ( ! sPassword . ToCharArray ( ) . Any ( char . IsUpper ) )
bValid = false ;
}
if ( oHardPassword . ContainSpecialCharacter )
{
Regex RgxUrl = new Regex ( "[^a-z0-9]" ) ;
if ( ! RgxUrl . IsMatch ( sPassword ) )
bValid = false ;
}
if ( ! oHardPassword . UserPasswordSame )
{
if ( sUsername . ToLower ( ) . Trim ( ) = = sPassword . ToLower ( ) . Trim ( ) )
bValid = false ;
}
if ( oHardPassword . MaxLength > 0 )
{
if ( sPassword . Length > oHardPassword . MaxLength )
bValid = false ;
}
if ( oHardPassword . MinLength > 0 )
{
if ( sPassword . Length < oHardPassword . MinLength )
bValid = false ;
}
return bValid ;
}
public static void ExportToExcel ( DataTable dt , string SFileName , string sSheetName )
{
string folderPath = SFileName ;
using ( ClosedXML . Excel . XLWorkbook wb = new ClosedXML . Excel . XLWorkbook ( ) )
{
var ws = wb . Worksheets . Add ( dt , sSheetName ) ;
ws . Tables . FirstOrDefault ( ) . ShowAutoFilter = false ;
wb . SaveAs ( folderPath ) ;
}
}
public static void ToCSV ( DataTable dtDataTable , string strFilePath )
{
StreamWriter sw = new StreamWriter ( strFilePath , false ) ;
//headers
//for (int i = 0; i < dtDataTable.Columns.Count; i++)
//{
// sw.Write(dtDataTable.Columns[i]);
// if (i < dtDataTable.Columns.Count - 1)
// {
// sw.Write(",");
// }
//}
// sw.Write(sw.NewLine);
foreach ( DataRow dr in dtDataTable . Rows )
{
for ( int i = 0 ; i < dtDataTable . Columns . Count ; i + + )
{
if ( ! Convert . IsDBNull ( dr [ i ] ) )
{
string value = dr [ i ] . ToString ( ) ;
if ( value . Contains ( ',' ) )
{
value = String . Format ( "\"{0}\"" , value ) ;
sw . Write ( value ) ;
}
else
{
sw . Write ( dr [ i ] . ToString ( ) ) ;
}
}
if ( i < dtDataTable . Columns . Count - 1 )
{
sw . Write ( "," ) ;
}
}
sw . Write ( sw . NewLine ) ;
}
sw . Close ( ) ;
}
public static string [ ] GetDFSL ( DataTable dt , string nDepartmentID )
{
string sDes = "" ;
foreach ( DataRow dr in dt . Rows )
{
if ( dr [ 0 ] . ToString ( ) = = nDepartmentID )
{
sDes = dr [ 3 ] . ToString ( ) ;
break ;
}
}
string [ ] values = sDes . Split ( ',' ) ;
return values ;
}
public static ID SetFormName
{
get
{
return _setFormName ;
}
set
{
_setFormName = value ;
}
}
private static int GetRoundOfDigit ( )
{
//int roundOfDigit = 0;
try
{
if ( _roundofDigit ! = - 1 )
{
_roundofDigit = ConfigurationManager . GetIntValue ( "root" , "roundofdegit" , EnumConfigurationType . Logic ) ;
if ( _roundofDigit > 4 | | _roundofDigit < 0 )
{
_roundofDigit = - 1 ;
throw new ServiceException ( "Round of digit not greater 4 digit. Location: "
+ "logic-Configuration; Node:Root, Child-Node:RoundOfDegit, Value:" + _roundofDigit . ToString ( ) ) ;
}
}
}
catch ( Exception ex )
{
throw new ServiceException ( ex . InnerException . Message ) ;
}
return _roundofDigit ;
}
public static List < BudgetTempCollection > GetBudetPositions ( )
{
int nPos = 1 ;
List < BudgetTempCollection > oItems = new List < BudgetTempCollection > ( ) ;
BudgetTempCollection item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . Basic_Salary ;
item . position = nPos ;
item . OriginID = 0 ;
nPos + + ;
oItems . Add ( item ) ;
ObjectsTemplate < AllowanceDeduction > oAllowances = AllowanceDeduction . GetAllowance ( EnumStatus . Active ) ;
foreach ( AllowanceDeduction al in oAllowances )
{
item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . Allowance ;
item . position = nPos ;
item . OriginID = al . ID . Integer ;
nPos + + ;
oItems . Add ( item ) ;
}
item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . PF ;
item . position = nPos ;
item . OriginID = 0 ;
nPos + + ;
oItems . Add ( item ) ;
ObjectsTemplate < Bonus > oBonus = Bonus . Get ( EnumStatus . Active ) ;
foreach ( Bonus al in oBonus )
{
item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . Bonus ;
item . position = nPos ;
item . OriginID = al . ID . Integer ;
nPos + + ;
oItems . Add ( item ) ;
}
ObjectsTemplate < OpiItem > oOPIs = OpiItem . Get ( ) ;
foreach ( OpiItem al in oOPIs )
{
item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . OPI ;
item . position = nPos ;
item . OriginID = al . ID . Integer ;
nPos + + ;
oItems . Add ( item ) ;
}
ObjectsTemplate < AllowanceDeduction > oDeducts = AllowanceDeduction . GetDeduction ( EnumStatus . Active ) ;
foreach ( AllowanceDeduction al in oDeducts )
{
item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . Deduction ;
item . position = nPos ;
item . OriginID = al . ID . Integer ;
nPos + + ;
oItems . Add ( item ) ;
}
item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . IncomeTax ;
item . position = nPos ;
item . OriginID = 0 ;
nPos + + ;
oItems . Add ( item ) ;
item = new BudgetTempCollection ( ) ;
item . enumBudgetCode = EnumBudgetCode . CTC ;
item . position = nPos ;
item . OriginID = 0 ;
nPos + + ;
oItems . Add ( item ) ;
return oItems ;
}
public static string FindRCCode2 ( Department department , ObjectsTemplate < Department > oDepartments )
{
string rccode = "" ;
if ( department ! = null & & ( department . Tier = = 2 | | department . Tier = = 1 ) )
return rccode = department . RCCode ;
else
department = oDepartments . Find ( x = > x . ID = = department . ParentID ) ;
if ( department ! = null & & ( department . Tier = = 2 | | department . Tier = = 1 ) )
return rccode = department . RCCode ;
else
department = oDepartments . Find ( x = > x . ID = = department . ParentID ) ;
if ( department ! = null & & ( department . Tier = = 2 | | department . Tier = = 1 ) )
return rccode = department . RCCode ;
else
department = oDepartments . Find ( x = > x . ID = = department . ParentID ) ;
if ( department ! = null & & ( department . Tier = = 2 | | department . Tier = = 1 ) )
return rccode = department . RCCode ;
else
department = oDepartments . Find ( x = > x . ID = = department . ParentID ) ;
if ( department ! = null & & ( department . Tier = = 2 | | department . Tier = = 1 ) )
return rccode = department . RCCode ;
else
department = oDepartments . Find ( x = > x . ID = = department . ParentID ) ;
if ( department ! = null & & ( department . Tier = = 2 | | department . Tier = = 1 ) )
return rccode = department . RCCode ;
return rccode ;
}
public static string FindRCCode ( Department department , ObjectsTemplate < Department > oDepartments )
{
string rccode = "" ;
if ( department ! = null )
{
Department oItem = new Department ( ) ;
if ( department . Tier = = 6 )
{
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
rccode = oItem = = null ? "" : oItem . RCCode ;
}
else if ( department . Tier = = 5 )
{
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
rccode = oItem = = null ? "" : oItem . RCCode ;
}
else if ( department . Tier = = 4 )
{
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
rccode = oItem = = null ? "" : oItem . RCCode ;
}
else if ( department . Tier = = 3 )
{
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
rccode = oItem = = null ? "" : oItem . RCCode ;
}
else if ( department . Tier = = 2 )
{
rccode = department . RCCode ;
}
}
return rccode ;
}
public static string [ ] FindDivisionDeparmentUnit ( Department department , ObjectsTemplate < Department > oDepartments )
{
string [ ] aDescription = new string [ 6 ] ;
Department oItem = new Department ( ) ;
if ( department ! = null )
{
if ( department . Tier = = 6 )
{
aDescription [ 5 ] = department . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 4 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 3 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 2 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 1 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 0 ] = oItem . Name ;
}
//else
// aDescription[0] = aDescription[1];
}
}
}
}
}
else if ( department . Tier = = 5 )
{
aDescription [ 5 ] = "" ;
aDescription [ 4 ] = department . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 3 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 2 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 1 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 0 ] = oItem . Name ;
}
//else
// aDescription[0] = aDescription[1];
}
}
}
}
else if ( department . Tier = = 4 )
{
aDescription [ 5 ] = "" ;
aDescription [ 4 ] = "" ;
aDescription [ 3 ] = department . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 2 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 1 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 0 ] = oItem . Name ;
}
//else
// aDescription[0] = aDescription[1];
}
}
}
else if ( department . Tier = = 3 )
{
aDescription [ 5 ] = "" ;
aDescription [ 4 ] = "" ;
aDescription [ 3 ] = "" ;
aDescription [ 2 ] = department . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 1 ] = oItem . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = oItem . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 0 ] = oItem . Name ;
}
//else
// aDescription[0] = aDescription[1];
}
}
else if ( department . Tier = = 2 )
{
aDescription [ 5 ] = "" ;
aDescription [ 4 ] = "" ;
aDescription [ 3 ] = "" ;
aDescription [ 2 ] = "" ;
aDescription [ 1 ] = department . Name ;
oItem = oDepartments . Find ( delegate ( Department dept ) { return dept . ID = = department . ParentID ; } ) ;
if ( oItem ! = null )
{
aDescription [ 0 ] = oItem . Name ;
}
//else
// aDescription[0] = aDescription[1];
}
else if ( department . Tier = = 1 )
{
aDescription [ 5 ] = "" ;
aDescription [ 4 ] = "" ;
aDescription [ 3 ] = "" ;
aDescription [ 2 ] = "" ;
aDescription [ 1 ] = "" ;
aDescription [ 0 ] = department . Name ;
}
}
return aDescription ;
}
public static string GetFriendlyName ( EnumStatus eStatus )
{
string sName = "" ;
if ( eStatus = = EnumStatus . Active )
sName = "Active" ;
else if ( eStatus = = EnumStatus . Archieved )
sName = "Archieved" ;
else if ( eStatus = = EnumStatus . Inactive )
sName = "Inactive" ;
else if ( eStatus = = EnumStatus . Regardless )
sName = "Regardless" ;
else if ( eStatus = = EnumStatus . Role_Approved_and_Menu_Assigned )
sName = "Role Approved and Menu Assigned" ;
else if ( eStatus = = EnumStatus . Role_Approved_and_Menu_Not_Yet_Assigned )
sName = "Role Approved and Menu Not Yet Assigned" ;
else if ( eStatus = = EnumStatus . Role_Assigned_To_User_And_Waiting_For_Approve )
sName = "Role Assigned To User And Waiting For Approve" ;
else if ( eStatus = = EnumStatus . Role_Created_And_Waiting_For_Approve )
sName = "Role Created And Waiting For Approve" ;
else if ( eStatus = = EnumStatus . Role_Menu_Assigned_And_Waiting_For_Approve )
sName = "Role Menu Assigned And Waiting For Approve" ;
else if ( eStatus = = EnumStatus . Role_Menu_Modified_And_Waiting_For_Approve )
sName = "Role Menu Modified And Waiting For Approve" ;
else if ( eStatus = = EnumStatus . Role_Modified_And_Waiting_For_Approve )
sName = "Role Modified And Waiting For Approve" ;
else if ( eStatus = = EnumStatus . User_Active_And_Waiting_For_Approve )
sName = "User Active And Waiting For Approve" ;
else if ( eStatus = = EnumStatus . User_Created_And_Waiting_For_Approve | | eStatus = = EnumStatus . User_Modified_And_Waiting_For_Approve )
sName = "User Created And Waiting For Approve" ;
else if ( eStatus = = EnumStatus . User_Inactive_And_Waiting_For_Approve )
sName = "User Inactive And Waiting For Approve" ;
return sName ;
}
public static bool IsSingleSingnOn ( )
{
try
{
bool bvalid = ConfigurationManager . GetBoolValue ( "weblogin" , "singlesignon" , EnumConfigurationType . Logic ) ;
if ( bvalid = = true ) return true ;
else return false ;
}
catch ( Exception ex )
{
throw new Exception ( ex . Message ) ;
}
}
public static double ConevrtToDlyRateofMonth ( double nAmount , DateTime dMonthDate )
{
int nDays = Global . DateFunctions . DateDiff ( "d" , GlobalFunctions . FirstDateOfMonth ( dMonthDate ) ,
GlobalFunctions . LastDateOfMonth ( dMonthDate ) ) + 1 ;
return nAmount / nDays ;
}
public static double ConevrtToDlyRate ( double nAmount , DateTime dMonthDate )
{
bool isYearly = ConfigurationManager . GetBoolValue ( "root" , "fractionalcalculationyearly" , EnumConfigurationType . Logic ) ;
if ( isYearly = = false )
{
return ConevrtToDlyRateofMonth ( nAmount , dMonthDate ) ;
}
else
{
return ( nAmount * 12 ) / 365 ;
}
}
public static DateTime FirstDateOfMonth ( DateTime date )
{
return Ease . CoreV35 . Utility . Global . DateFunctions . FirstDateOfMonth ( date ) ;
}
public static DateTime LastDateOfMonth ( DateTime date )
{
return Ease . CoreV35 . Utility . Global . DateFunctions . LastDateOfMonth ( date ) ;
}
public static DateTime LastDateOfYear ( DateTime date )
{
return new DateTime ( date . Year , 12 , 31 ) ;
}
public static DateTime FirstDateOfYear ( DateTime date )
{
return new DateTime ( date . Year , 1 , 1 ) ;
}
public static double Round ( double value )
{
double roundedValue = 0.00 ;
try
{
//roundedValue = Ease.CoreV35.Utility.Global.NumericFunctions.RoundOff(value, GetRoundOfDigit());
roundedValue = Math . Round ( value , GetRoundOfDigit ( ) , MidpointRounding . AwayFromZero ) ;
}
catch ( Exception ex )
{
throw new ServiceException ( ex . InnerException . Message ) ;
}
return roundedValue ;
}
public static void ResetStatus ( )
{
Global . Status . ResetStatus ( ) ;
}
public static void SetStatus ( string statusString )
{
Global . Status . SetStatus ( statusString ) ;
}
public static void UpdateStatus ( string statusString )
{
Global . Status . UpdateStatus ( statusString ) ;
}
public static string MillionToInWords ( int no )
{
if ( no = = 0 )
return "zero" ;
if ( no < 0 )
return "minus " + MillionToInWords ( Math . Abs ( no ) ) ;
string stringValue = "" ;
if ( ( no / 1000000 ) > 0 )
{
stringValue + = MillionToInWords ( no / 1000000 ) + " million " ;
no % = 1000000 ;
}
if ( ( no / 1000 ) > 0 )
{
stringValue + = MillionToInWords ( no / 1000 ) + " thousand " ;
no % = 1000 ;
}
if ( ( no / 100 ) > 0 )
{
stringValue + = MillionToInWords ( no / 100 ) + " hundred " ;
no % = 100 ;
}
if ( no > 0 )
{
if ( stringValue ! = "" )
stringValue + = "and " ;
var units = new [ ] { "zero" , "one" , "two" , "three" , "four" , "five" , "six" , "seven" , "eight" , "nine" , "ten" , "eleven" , "twelve" , "thirteen" , "fourteen" , "fifteen" , "sixteen" , "seventeen" , "eighteen" , "nineteen" } ;
var tens = new [ ] { "zero" , "ten" , "twenty" , "thirty" , "forty" , "fifty" , "sixty" , "seventy" , "eighty" , "ninety" } ;
if ( no < 20 )
stringValue + = units [ no ] ;
else
{
stringValue + = tens [ no / 10 ] ;
if ( ( no % 10 ) > 0 )
stringValue + = "-" + units [ no % 10 ] ;
}
}
return stringValue ;
}
public static string TakaFormat ( double value )
{
double roundedValue = 0.00 ;
string TakaFormat = "" ;
try
{
roundedValue = Math . Round ( value , GetRoundOfDigit ( ) , MidpointRounding . AwayFromZero ) ;
//roundedValue = Ease.CoreV35.Utility.Global.NumericFunctions.RoundOff(value, GetRoundOfDigit());
//TakaFormat = Ease.CoreV35.Utility.Global.NumericFunctions.TakaFormat(roundedValue);
System . Globalization . CultureInfo vNewCulture = ( System . Globalization . CultureInfo ) System . Threading . Thread . CurrentThread . CurrentCulture . Clone ( ) ;
//TakaFormat = string.Format(vNewCulture, "{0:N}",(int) roundedValue);
TakaFormat = ( ( int ) roundedValue ) . ToString ( ) ;
}
catch ( Exception ex )
{
throw new ServiceException ( ex . InnerException . Message ) ;
}
return TakaFormat ;
}
public static string TakaFormat ( int value )
{
double roundedValue = 0.00 ;
string TakaFormat = "" ;
try
{
//roundedValue = Ease.CoreV35.Utility.Global.NumericFunctions.RoundOff(Convert.ToDouble(value), GetRoundOfDigit());
roundedValue = Math . Round ( Convert . ToDouble ( value ) , GetRoundOfDigit ( ) , MidpointRounding . AwayFromZero ) ;
TakaFormat = Ease . CoreV35 . Utility . Global . NumericFunctions . TakaFormat ( roundedValue ) ;
}
catch ( Exception ex )
{
throw new ServiceException ( ex . InnerException . Message ) ;
}
return TakaFormat ;
}
public static DateTime GetOperationDate ( )
{
try
{
return Service . GetOperationDate ( ) ;
}
catch ( ServiceException e )
{
throw new Exception ( e . Message , e ) ;
}
}
public static DataSet GetSalarySummary ( DateTime fromDate , DateTime toDate )
{
try
{
return Service . GetSalarySummary ( fromDate , toDate ) ;
}
catch ( ServiceException e )
{
throw new Exception ( e . Message , e ) ;
}
}
public static enumfractionCalculatinType getFractionateCalType ( )
{
enumfractionCalculatinType type = enumfractionCalculatinType . Monthly ;
string caltype = ConfigurationManager . GetStringValue ( "root" , "monthfraction" , EnumConfigurationType . Logic ) ;
if ( caltype . ToUpper ( ) = = "THIRTYDAYS" )
type = enumfractionCalculatinType . ThirtyDaysMonth ;
else if ( caltype . ToUpper ( ) = = "YEARLY" )
type = enumfractionCalculatinType . Yearly ;
else
type = enumfractionCalculatinType . Monthly ;
return type ;
}
public static double GetFractinalOfMonth ( DateTime dDate )
{
double WorkDays ;
double TotalDays ;
double nFraction = 1 ;
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , dDate ,
GlobalFunctions . LastDateOfMonth ( dDate ) ) + 1 ;
// bool isYearly = ConfigurationManager.GetBoolValue("root", "fractionalcalculationyearly", EnumConfigurationType.Logic);
enumfractionCalculatinType ntype = getFractionateCalType ( ) ;
switch ( ntype )
{
case enumfractionCalculatinType . Monthly :
TotalDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( dDate ) , GlobalFunctions . LastDateOfMonth ( dDate ) ) + 1 ;
nFraction = ( WorkDays / TotalDays ) ;
break ;
case enumfractionCalculatinType . Yearly :
double yearlyFraction = 0.0328767123 ; // which mean 12/365
if ( WorkDays = = dDate . Day )
nFraction = 1 ;
//else if (dDate.Day ==1) // if date is first of month, fractionate should be 1
// nFraction = 1;
else
nFraction = yearlyFraction * WorkDays ;
if ( nFraction > 1 ) nFraction = 1 ; // monthly fraction can't greater 1,
break ;
case enumfractionCalculatinType . ThirtyDaysMonth :
if ( dDate = = LastDateOfMonth ( dDate ) )
return 1 ;
else
{
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , dDate ,
GlobalFunctions . LastDateOfMonth ( dDate ) ) + 1 ;
int tempDaya = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , FirstDateOfMonth ( dDate ) ,
GlobalFunctions . LastDateOfMonth ( dDate ) ) + 1 ;
if ( tempDaya = = 31 ) WorkDays = WorkDays - 1 ;
else if ( tempDaya < 30 )
if ( tempDaya = = 28 ) WorkDays = WorkDays + 2 ;
else WorkDays = WorkDays + 1 ;
TotalDays = 30 ;
// TotalDays = Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d",
// GlobalFunctions.FirstDateOfMonth(dDate), GlobalFunctions.LastDateOfMonth(dDate));
nFraction = ( WorkDays / TotalDays ) ;
}
break ;
default :
break ;
}
return nFraction ;
}
public static double GetFractinalOfTillDate ( DateTime dDate )
{
double WorkDays ;
double TotalDays ;
double nFraction = 1 ;
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( dDate ) , dDate ) + 1 ;
enumfractionCalculatinType ntype = getFractionateCalType ( ) ;
switch ( ntype )
{
case enumfractionCalculatinType . Monthly :
TotalDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( dDate ) , GlobalFunctions . LastDateOfMonth ( dDate ) ) + 1 ;
nFraction = ( WorkDays / TotalDays ) ;
break ;
case enumfractionCalculatinType . Yearly :
double yearlyFraction = 0.0328767123 ; // which mean 12/365
if ( WorkDays = = dDate . Day )
nFraction = 1 ;
else
nFraction = yearlyFraction * WorkDays ;
break ;
case enumfractionCalculatinType . ThirtyDaysMonth :
if ( dDate = = FirstDateOfMonth ( dDate ) )
return 1 ;
else
{
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( dDate ) , dDate ) + 1 ;
int tempDaya = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , FirstDateOfMonth ( dDate ) ,
GlobalFunctions . LastDateOfMonth ( dDate ) ) + 1 ;
if ( tempDaya = = 31 ) WorkDays = WorkDays - 1 ;
else if ( tempDaya < 30 )
if ( tempDaya = = 28 ) WorkDays = WorkDays + 2 ;
else WorkDays = WorkDays + 1 ;
TotalDays = 30 ;
// TotalDays = Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d",
// GlobalFunctions.FirstDateOfMonth(dDate), GlobalFunctions.LastDateOfMonth(dDate));
nFraction = ( WorkDays / TotalDays ) ;
}
break ;
default :
break ;
}
return nFraction ;
}
public static double GetFraction ( DateTime StartDate , DateTime EndDate )
{
double WorkDays ;
double MonDays ;
double TotFract ;
double nFraction = 1 ;
TotFract = 0 ;
// bool isYearly = ConfigurationManager.GetBoolValue("root", "fractionalcalculationyearly", EnumConfigurationType.Logic);
//bool isYearly = ConfigurationManager.GetBoolValue("root", "fractionalcalculation", EnumConfigurationType.Logic);
enumfractionCalculatinType ntype = getFractionateCalType ( ) ;
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , StartDate ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ;
switch ( ntype )
{
case enumfractionCalculatinType . Monthly :
while ( StartDate < = EndDate )
{
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , StartDate ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ;
MonDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( StartDate ) ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ;
if ( StartDate . Month = = EndDate . Month & & EndDate ! = GlobalFunctions . LastDateOfMonth ( EndDate ) )
{
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( EndDate ) , EndDate ) + 1 ;
}
TotFract = TotFract + WorkDays / MonDays ;
StartDate = GlobalFunctions . LastDateOfMonth ( StartDate ) . AddDays ( 1 ) ;
}
nFraction = TotFract ;
break ;
case enumfractionCalculatinType . Yearly :
//0.032876712328767123287671232876712
//0.0328767123
//if (StartDate == GlobalFunctions.FirstDateOfMonth(StartDate) && EndDate == GlobalFunctions.LastDateOfMonth(EndDate))
//{
// WorkDays = Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("m", StartDate, EndDate) + 1;
// nFraction = WorkDays;
//}
//else
//{
// WorkDays = Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d", StartDate, EndDate) + 1;
// double yearlyFraction = 0.0328767123; // which mean 12/365
// nFraction = yearlyFraction * WorkDays;
//}
nFraction = 0 ;
if ( Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "m" , GlobalFunctions . FirstDateOfMonth ( StartDate ) ,
GlobalFunctions . LastDateOfMonth ( EndDate ) ) > 2 )
{
nFraction = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "m" , GlobalFunctions . FirstDateOfMonth ( StartDate . AddMonths ( 1 ) ) ,
GlobalFunctions . LastDateOfMonth ( EndDate . AddMonths ( - 1 ) ) ) ;
nFraction = nFraction + ( Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , StartDate ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ) * 0.0328767123 ;
nFraction = nFraction + ( Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , GlobalFunctions . FirstDateOfMonth ( EndDate ) ,
EndDate ) + 1 ) * 0.0328767123 ;
}
else
{
if ( StartDate . Month = = EndDate . Month & & StartDate . Year = = EndDate . Year ) // if cross two month
{
if ( StartDate = = FirstDateOfMonth ( StartDate ) & & EndDate = = LastDateOfMonth ( EndDate ) )
nFraction = 1 ;
else
nFraction = nFraction + ( Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , StartDate ,
EndDate ) + 1 ) * 0.0328767123 ;
}
else
{
if ( StartDate = = FirstDateOfMonth ( StartDate ) & & EndDate = = LastDateOfMonth ( EndDate ) )
nFraction = 1 ;
else
nFraction = nFraction + ( Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , StartDate ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ) * 0.0328767123 ;
if ( EndDate = = LastDateOfMonth ( EndDate ) )
nFraction = nFraction + 1 ;
else nFraction = nFraction + ( Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , GlobalFunctions . FirstDateOfMonth ( EndDate ) ,
EndDate ) + 1 ) * 0.0328767123 ;
}
}
//while (StartDate <= EndDate)
//{
// if (StartDate.Day != 1 )
// {
// nFraction = nFraction + ((double)(Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d",
// GlobalFunctions.FirstDateOfMonth(EndDate), EndDate) + 1)) * 0.0328767123;
// }
// WorkDays = Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d", StartDate,
// GlobalFunctions.LastDateOfMonth(StartDate)) + 1;
// MonDays = Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d",
// GlobalFunctions.FirstDateOfMonth(StartDate),
// GlobalFunctions.LastDateOfMonth(StartDate)) + 1;
// if (StartDate.Month == EndDate.Month && EndDate != GlobalFunctions.LastDateOfMonth(EndDate))
// {
// nFraction = nFraction + ((double) (Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d",
// GlobalFunctions.FirstDateOfMonth(EndDate), EndDate) + 1)) * 0.0328767123;
// }
// TotFract = TotFract + WorkDays / MonDays;
// StartDate = GlobalFunctions.LastDateOfMonth(StartDate).AddDays(1);
//}
break ;
case enumfractionCalculatinType . ThirtyDaysMonth :
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , StartDate ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ;
while ( StartDate < = EndDate )
{
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , StartDate ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ;
MonDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( StartDate ) , GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ;
int tempDaya = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" , FirstDateOfMonth ( StartDate ) ,
GlobalFunctions . LastDateOfMonth ( StartDate ) ) + 1 ;
if ( tempDaya = = 31 ) WorkDays = WorkDays - 1 ;
else if ( tempDaya < 30 )
if ( tempDaya = = 28 ) WorkDays = WorkDays + 2 ;
else WorkDays = WorkDays + 1 ;
MonDays = 30 ;
if ( StartDate . Month = = EndDate . Month & & EndDate ! = GlobalFunctions . LastDateOfMonth ( EndDate ) )
{
WorkDays = Ease . CoreV35 . Utility . Global . DateFunctions . DateDiff ( "d" ,
GlobalFunctions . FirstDateOfMonth ( EndDate ) , EndDate ) + 1 ;
MonDays = 30 ;
}
TotFract = TotFract + WorkDays / MonDays ;
StartDate = GlobalFunctions . LastDateOfMonth ( StartDate ) . AddDays ( 1 ) ;
}
nFraction = TotFract ;
break ;
default :
break ;
}
return nFraction ;
}
//return Total Hour and Minutes In string Format(Hour.Minutes)
public static string GetHourMinutes ( List < String > hours )
{
string HoursMinutes = string . Empty ;
double hour = 0 ;
double minutes = 0 ;
foreach ( String hr in hours )
{
//string[] x = hr.ToString("f").Split('.');
//string xx = hr.ToString();
hour = hour + Convert . ToDouble ( hr . Split ( ':' ) [ 0 ] ) ;
minutes = minutes + Convert . ToDouble ( hr . Split ( ':' ) [ 1 ] ) ;
}
if ( minutes > 60 )
{
int hr = Convert . ToInt32 ( minutes ) / 60 ;
hour = hour + Convert . ToDouble ( hr ) ;
minutes = minutes % 60 ;
}
return HoursMinutes = Convert . ToString ( hour ) + ":" + minutes . ToString ( "00" ) ;
}
public static string SaveDirectoryImages ( string sDirectoryPath , bool needEmployeeCheck , EnumPhotoType ePhotoType )
{
string sMsg = "" ;
ObjectsTemplate < Employee > oEmployees = new ObjectsTemplate < Employee > ( ) ;
int nFolderLevel = 0 ;
string sFolderLevel = ConfigurationManager . GetStringValue ( "root" , "folderlevel" , EnumConfigurationType . Logic ) ;
if ( sFolderLevel ! = null )
nFolderLevel = Convert . ToInt16 ( sFolderLevel ) ;
StringBuilder sb = new StringBuilder ( ) ;
StringBuilder sb2 = new StringBuilder ( ) ;
int nCount = 0 ;
DirectoryInfo di = new DirectoryInfo ( sDirectoryPath ) ;
FileInfo [ ] smFiles = di . GetFiles ( ) ;
if ( needEmployeeCheck )
{
oEmployees = Employee . GetAllEmps ( ) ;
foreach ( FileInfo fi in smFiles )
{
Employee oEmp = oEmployees . Find ( delegate ( Employee em ) { return em . EmployeeNo = = Path . GetFileNameWithoutExtension ( fi . Name ) ; } ) ;
if ( oEmp = = null )
{
sb . AppendLine ( "\t" + Path . GetFileNameWithoutExtension ( fi . Name ) ) ;
}
}
if ( sb . ToString ( ) ! = "" )
sMsg + = "The following employee not found\n-----------------------------------------------------------------------------------------------------------------------------------\n\n" + sb . ToString ( ) ;
}
if ( sMsg = = "" )
{
foreach ( FileInfo fi in smFiles )
{
if ( nFolderLevel > Path . GetFileNameWithoutExtension ( fi . Name ) . Length )
{
sb2 . AppendLine ( "\t" + "File Name= " + fi . Name + " Length= " + Path . GetFileNameWithoutExtension ( fi . Name ) . Length . ToString ( ) ) ;
continue ;
}
if ( fi . Extension . ToLower ( ) = = ".jpg" | |
fi . Extension . ToLower ( ) = = ".jpeg" | |
fi . Extension . ToLower ( ) = = ".png" | |
fi . Extension . ToLower ( ) = = ".gif" | |
fi . Extension . ToLower ( ) = = ".tif" | |
fi . Extension . ToLower ( ) = = ".tiff" | |
fi . Extension . ToLower ( ) = = ".bmp" )
{
SaveImage ( fi . FullName , EnumPhotoType . EmployeePicture ) ;
}
}
if ( sb2 . ToString ( ) ! = "" )
{
if ( sb2 . ToString ( ) ! = "" )
sMsg + = "\n\n Invalid Image Length. Original Folder Level Length= " + nFolderLevel . ToString ( ) + "\n-----------------------------------------------------------------------------------------------------------------------------------\n\n" + sb2 . ToString ( ) ;
}
}
return sMsg ;
}
//catch (Exception exp)
//{
// MessageBox.Show(exp.Message, "Upload Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
public static void SaveImage ( string sImageLocation , EnumPhotoType ePhotoType )
{
int nFolderLevel = 0 ;
string sFolderLevel = ConfigurationManager . GetStringValue ( "root" , "folderlevel" , EnumConfigurationType . Logic ) ;
if ( sFolderLevel ! = null & & sFolderLevel ! = "" )
nFolderLevel = Convert . ToInt16 ( sFolderLevel ) ;
FileInfo fInfo = new FileInfo ( sImageLocation . Trim ( ) ) ;
string sImageName = fInfo . Name ;
List < PhotoPath > oPhotoPaths = PhotoPath . Get ( ) ;
if ( oPhotoPaths . Count = = 0 )
throw new Exception ( "Photo path is not defined." ) ;
string sRootPath = "" ;
switch ( ePhotoType )
{
case EnumPhotoType . EmployeePicture :
sRootPath = oPhotoPaths [ 0 ] . EmployeePhoto ;
break ;
case EnumPhotoType . EmployeeSignature :
sRootPath = oPhotoPaths [ 0 ] . EmployeeSignature ;
break ;
case EnumPhotoType . NomineePicture :
sRootPath = oPhotoPaths [ 0 ] . NomineePhoto ;
break ;
case EnumPhotoType . NomineeSignature :
sRootPath = oPhotoPaths [ 0 ] . NomineeSignature ;
break ;
case EnumPhotoType . HospitalizationPicture :
sRootPath = oPhotoPaths [ 0 ] . HospitalizationPhoto ;
break ;
}
string sSubFolderName = sRootPath ;
if ( nFolderLevel = = 0 )
{
if ( sImageLocation . Trim ( ) ! = ( sSubFolderName + "\\" + sImageName ) . Trim ( ) )
{
bool exists = System . IO . Directory . Exists ( sSubFolderName ) ;
if ( ! exists )
System . IO . Directory . CreateDirectory ( sSubFolderName ) ;
File . Copy ( sImageLocation , sSubFolderName + "\\" + sImageName , true ) ;
}
return ;
}
string sFileNameUptoLevel = sImageName . Substring ( 0 , nFolderLevel ) ;
char [ ] sFileNameArray = sFileNameUptoLevel . ToCharArray ( ) ;
foreach ( char cChar in sFileNameArray )
{
if ( cChar = = '.' )
continue ;
sSubFolderName + = "\\" + cChar ;
bool exists = System . IO . Directory . Exists ( sSubFolderName ) ;
if ( ! exists )
System . IO . Directory . CreateDirectory ( sSubFolderName ) ;
}
if ( fInfo . IsReadOnly )
fInfo . IsReadOnly = false ;
if ( sImageLocation . Trim ( ) ! = ( sSubFolderName + "\\" + sImageName ) . Trim ( ) )
File . Copy ( sImageLocation , sSubFolderName + "\\" + sImageName , true ) ;
}
public static string GetImage ( string sFilename , EnumPhotoType ePhotoType )
{
if ( sFilename = = "" )
throw new Exception ( "Invalid file name." ) ; ;
string sFilePath = "" ;
int nFolderLevel = 0 ;
string sFolderLevel = ConfigurationManager . GetStringValue ( "root" , "folderlevel" , EnumConfigurationType . Logic ) ;
if ( sFolderLevel ! = null & & sFolderLevel ! = "" )
nFolderLevel = Convert . ToInt16 ( sFolderLevel ) ;
//else
// throw new Exception("Folder level is not defined in config file.");
List < PhotoPath > oPhotoPaths = PhotoPath . Get ( ) ;
if ( oPhotoPaths . Count = = 0 )
throw new Exception ( "Photo path is not defined." ) ;
string sRootPath = "" ;
switch ( ePhotoType )
{
case EnumPhotoType . EmployeePicture :
sRootPath = oPhotoPaths [ 0 ] . EmployeePhoto ;
break ;
case EnumPhotoType . EmployeeSignature :
sRootPath = oPhotoPaths [ 0 ] . EmployeeSignature ;
break ;
case EnumPhotoType . NomineePicture :
sRootPath = oPhotoPaths [ 0 ] . NomineePhoto ;
break ;
case EnumPhotoType . NomineeSignature :
sRootPath = oPhotoPaths [ 0 ] . NomineeSignature ;
break ;
case EnumPhotoType . HospitalizationPicture :
sRootPath = oPhotoPaths [ 0 ] . HospitalizationPhoto ;
break ;
}
string sSubFolderName = sRootPath ;
string sFileNameUptoLevel = sFilename . Substring ( 0 , nFolderLevel ) ;
char [ ] sFileNameArray = sFileNameUptoLevel . ToCharArray ( ) ;
foreach ( char cChar in sFileNameArray )
{
if ( cChar = = '.' )
continue ;
sSubFolderName + = "\\" + cChar ;
}
DirectoryInfo di = new DirectoryInfo ( sSubFolderName ) ;
FileInfo [ ] smFiles = di . GetFiles ( ) ;
foreach ( FileInfo fi in smFiles )
{
if ( fi . Name = = sFilename )
{
sFilePath = fi . FullName ;
break ;
}
}
return sFilePath ;
}
public static void BackupDatabase ( string sPath )
{
try
{
GlobalFunctions . Service . BackupDatabase ( sPath ) ;
}
catch ( Exception ex )
{
throw ex ;
}
}
}
public static class GlobalExtensions
{
public static string CommaSeparatedIDs < T > ( this ObjectsTemplate < T > objCollections ) where T : ObjectTemplate
{
return objCollections . Aggregate ( new StringBuilder ( ) , ( acc , x ) = > acc . Append ( x . ID . Integer + "," ) ,
acc = > acc . ToString ( ) . Trim ( ',' ) ) ;
}
public static ObjectsTemplate < T > ToObjectsTemplate < T > ( this IEnumerable < T > objCollections ) where T : ObjectTemplate
{
ObjectsTemplate < T > objects = new ObjectsTemplate < T > ( ) ;
foreach ( var item in objCollections )
{
objects . Add ( item ) ;
}
return objects ;
}
public static DateTime RemoveSecondsAndMiliseconds ( this DateTime dt )
{
return dt . AddSeconds ( - dt . Second ) . AddMilliseconds ( - dt . Millisecond ) ;
}
public static DateTime FirstDateOfMonth ( this DateTime dt )
{
return new DateTime ( dt . Year , dt . Month , 1 ) ;
}
public static DateTime LastDateOfMonth ( this DateTime dt )
{
return new DateTime ( dt . Year , dt . Month , 1 ) . AddMonths ( 1 ) . AddDays ( - 1 ) ;
}
public static int TotalDaysInMonth ( this DateTime dt )
{
return ( int ) ( dt . LastDateOfMonth ( ) . Subtract ( dt . FirstDateOfMonth ( ) ) . TotalDays + 1 ) ;
}
public static string ToColorCode ( this System . Drawing . Color clr )
{
return System . Drawing . ColorTranslator . ToHtml ( clr ) ;
}
public static System . Drawing . Color ColorCodeToColor ( this string hex )
{
try
{
System . Drawing . Color clr = System . Drawing . ColorTranslator . FromHtml ( hex ) ;
return clr ;
}
catch ( Exception gEx )
{
if ( gEx . InnerException ! = null & & gEx . InnerException is FormatException )
{
throw new Exception ( "ColorCode String could not be converted to color\n\r This may happen due to invalid HTML Color code or Hex code" , gEx . InnerException ) ;
}
throw new Exception ( "An Error Occurred" , gEx ) ;
}
}
public static DataTable ToDataTable < TSource > ( this IList < TSource > data )
{
DataTable dataTable = new DataTable ( typeof ( TSource ) . Name ) ;
PropertyInfo [ ] props = typeof ( TSource ) . GetProperties ( BindingFlags . Public | BindingFlags . Instance ) ;
foreach ( PropertyInfo prop in props )
{
dataTable . Columns . Add ( prop . Name , Nullable . GetUnderlyingType ( prop . PropertyType ) ? ?
prop . PropertyType ) ;
}
foreach ( TSource item in data )
{
var values = new object [ props . Length ] ;
for ( int i = 0 ; i < props . Length ; i + + )
{
values [ i ] = props [ i ] . GetValue ( item , null ) ;
}
dataTable . Rows . Add ( values ) ;
}
return dataTable ;
}
}
public class ItemComparer : IComparer
{
public int Column { get ; set ; }
public SortOrder Order { get ; set ; }
public ItemComparer ( int colIndex )
{
Column = colIndex ;
Order = SortOrder . None ;
}
public int Compare ( object a , object b )
{
int result ;
ListViewItem itemA = a as ListViewItem ;
ListViewItem itemB = b as ListViewItem ;
result = String . Compare ( itemA . SubItems [ Column ] . Text , itemB . SubItems [ Column ] . Text ) ;
if ( Order = = SortOrder . Descending )
{
result * = - 1 ;
}
else
{
return - 1 ;
}
return result ;
}
}
public class CustomComparer : IComparer < string >
{
public int Compare ( string x , string y )
{
var regex = new Regex ( "^(d+)" ) ;
// run the regex on both strings
var xRegexResult = regex . Match ( x ) ;
var yRegexResult = regex . Match ( y ) ;
// check if they are both numbers
if ( xRegexResult . Success & & yRegexResult . Success )
{
return int . Parse ( xRegexResult . Groups [ 1 ] . Value ) . CompareTo ( int . Parse ( yRegexResult . Groups [ 1 ] . Value ) ) ;
}
// otherwise return as string comparison
return x . CompareTo ( y ) ;
}
}
#region Interface IThisSystemService
public interface IGlobalFunctionService
{
DateTime GetOperationDate ( ) ;
void BackupDatabase ( string sPath ) ;
DataSet GetSalarySummary ( DateTime fromDate , DateTime toDate ) ;
}
#endregion
}