Refactor and enhance contract handling logic
- Added `DailyWage`, `AvgWorkingHour`, and `FamilyAllowance` properties to `GetContractListForClientResponse`. - Refactored `WorkingHoursWeekly` conversion logic by introducing a reusable `WeeklyHourConvertor` method in `ContractRepository`. - Updated query result mapping to include new properties and utilize `WeeklyHourConvertor` for `AvgWorkingHour`. - Improved code readability and maintainability by centralizing repetitive logic.
This commit is contained in:
@@ -9,4 +9,7 @@ public class GetContractListForClientResponse
|
||||
public string ContractStart { get; set; }
|
||||
public string ContractEnd { get; set; }
|
||||
public bool IsSigned { get; set; }
|
||||
public string DailyWage { get; set; }
|
||||
public string AvgWorkingHour { get; set; }
|
||||
public string FamilyAllowance { get; set; }
|
||||
}
|
||||
@@ -1082,30 +1082,7 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
||||
|
||||
var weeklyDouble = 0.0;
|
||||
var weekly = c.WorkingHoursWeekly;
|
||||
if (!string.IsNullOrWhiteSpace(weekly) &&
|
||||
weekly != "24 - 12" && weekly != "24 - 24" && weekly != "36 - 12" && weekly != "48 - 24")
|
||||
{
|
||||
if (weekly.Contains("/"))
|
||||
{
|
||||
weeklyDouble = double.Parse(weekly);
|
||||
var minute = (int)((weeklyDouble % 1) * 60);
|
||||
var hour = (int)(weeklyDouble);
|
||||
c.WorkingHoursWeekly = hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
||||
}
|
||||
else if (weekly.Contains("."))
|
||||
{
|
||||
weeklyDouble = double.Parse(weekly, CultureInfo.InvariantCulture);
|
||||
var minute = (int)((weeklyDouble % 1) * 60);
|
||||
var hour = (int)(weeklyDouble);
|
||||
c.WorkingHoursWeekly = hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
||||
}
|
||||
else
|
||||
{
|
||||
c.WorkingHoursWeekly = c.WorkingHoursWeekly + " " + "ساعت";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
c.WorkingHoursWeekly = WeeklyHourConvertor(weekly);
|
||||
var emp = workshopEmpList.Where(x => x.WorkshopId == c.WorkshopIds)
|
||||
.Select(x => x.EmployerId).ToList();
|
||||
c.Employers = _employerRepository.GetEmployers(emp);
|
||||
@@ -1162,6 +1139,37 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
||||
return query;
|
||||
}
|
||||
|
||||
private static string WeeklyHourConvertor(string weekly)
|
||||
{
|
||||
double weeklyDouble;
|
||||
if (!string.IsNullOrWhiteSpace(weekly) &&
|
||||
weekly != "24 - 12" && weekly != "24 - 24" && weekly != "36 - 12" && weekly != "48 - 24")
|
||||
{
|
||||
if (weekly.Contains("/"))
|
||||
{
|
||||
weeklyDouble = double.Parse(weekly);
|
||||
var minute = (int)((weeklyDouble % 1) * 60);
|
||||
var hour = (int)(weeklyDouble);
|
||||
return hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
||||
}
|
||||
else if (weekly.Contains("."))
|
||||
{
|
||||
weeklyDouble = double.Parse(weekly, CultureInfo.InvariantCulture);
|
||||
var minute = (int)((weeklyDouble % 1) * 60);
|
||||
var hour = (int)(weeklyDouble);
|
||||
return hour + " " + "ساعت و" + " " + minute + " " + "دقیقه";
|
||||
}
|
||||
else
|
||||
{
|
||||
return weekly + " " + "ساعت";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public IQueryable<WorkshopEmployerViewModel> GetWorkshopEmployer()
|
||||
{
|
||||
return _context.WorkshopEmployers.Select(x => new WorkshopEmployerViewModel
|
||||
@@ -1602,7 +1610,10 @@ public class ContractRepository : RepositoryBase<long, Contract>, IContractRepos
|
||||
ContractEnd = c.ContractEnd.ToFarsi(),
|
||||
ContractNo = c.ContractNo,
|
||||
IsSigned = c.Signature == "1",
|
||||
EmployeeFullName = employeeFullName
|
||||
EmployeeFullName = employeeFullName,
|
||||
AvgWorkingHour = WeeklyHourConvertor(c.WorkingHoursWeekly),
|
||||
DailyWage = c.DayliWage,
|
||||
FamilyAllowance = c.FamilyAllowance
|
||||
};
|
||||
}).ToList()
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user