Compare commits
1 Commits
Fix/RollCa
...
Feature/se
| Author | SHA1 | Date | |
|---|---|---|---|
| 6eba59fa7b |
@@ -14,9 +14,7 @@
|
|||||||
<PackageReference Include="Newtonsoft.Json.Bson" Version="1.0.2" />
|
<PackageReference Include="Newtonsoft.Json.Bson" Version="1.0.2" />
|
||||||
<PackageReference Include="PersianTools.Core" Version="2.0.4" />
|
<PackageReference Include="PersianTools.Core" Version="2.0.4" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
||||||
<PackageReference Include="MD.PersianDateTime.Standard" Version="2.5.0" />
|
|
||||||
|
|
||||||
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -245,24 +245,21 @@ public class AuthHelper : IAuthHelper
|
|||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
|
|
||||||
public (long Id, UserType userType, long roleId) GetUserTypeWithId()
|
public (long Id, UserType userType) GetUserTypeWithId()
|
||||||
{
|
{
|
||||||
if (!IsAuthenticated())
|
if (!IsAuthenticated())
|
||||||
return (0, UserType.Anonymous, 0);
|
return (0, UserType.Anonymous);
|
||||||
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
||||||
|
|
||||||
var subAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId")?.Value ?? "0");
|
var subAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId")?.Value ?? "0");
|
||||||
if (subAccountId > 0)
|
if (subAccountId > 0)
|
||||||
return (subAccountId, UserType.SubAccount, 0);
|
return (subAccountId, UserType.SubAccount);
|
||||||
|
|
||||||
var id = long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value);
|
var id = long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value);
|
||||||
if (claims.FirstOrDefault(x => x.Type == "AdminAreaPermission")?.Value == "true")
|
if (claims.FirstOrDefault(x => x.Type == "AdminAreaPermission")?.Value == "true")
|
||||||
{
|
return (id, UserType.Admin);
|
||||||
var roleId = long.Parse(claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value ?? "0");
|
|
||||||
return (id, UserType.Admin, roleId);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (id, UserType.Client, 0);
|
return (id, UserType.Client);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ public interface IAuthHelper
|
|||||||
long CurrentSubAccountId();
|
long CurrentSubAccountId();
|
||||||
string GetWorkshopSlug();
|
string GetWorkshopSlug();
|
||||||
string GetWorkshopName();
|
string GetWorkshopName();
|
||||||
(long Id, UserType userType, long roleId) GetUserTypeWithId();
|
(long Id, UserType userType) GetUserTypeWithId();
|
||||||
}
|
}
|
||||||
@@ -9,24 +9,10 @@ public interface ISmsService
|
|||||||
void Send(string number, string message);
|
void Send(string number, string message);
|
||||||
bool VerifySend(string number, string message);
|
bool VerifySend(string number, string message);
|
||||||
bool LoginSend(string number, string message);
|
bool LoginSend(string number, string message);
|
||||||
/// <summary>
|
|
||||||
/// ارسال کد به کلاینت برای تکمیل فرایند ثبت نام
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="number"></param>
|
|
||||||
/// <param name="code"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<SentSmsViewModel> SendVerifyCodeToClient(string number, string code);
|
|
||||||
bool SendAccountsInfo(string number,string fullName, string userName);
|
bool SendAccountsInfo(string number,string fullName, string userName);
|
||||||
Task<ApiResultViewModel> GetByMessageId(int messId);
|
Task<ApiResultViewModel> GetByMessageId(int messId);
|
||||||
Task<List<ApiResultViewModel>> GetApiResult(string startDate, string endDate);
|
Task<List<ApiResultViewModel>> GetApiResult(string startDate, string endDate);
|
||||||
string DeliveryStatus(byte? dv);
|
string DeliveryStatus(byte? dv);
|
||||||
string DeliveryColorStatus(byte? dv);
|
string DeliveryColorStatus(byte? dv);
|
||||||
string UnixTimeStampToDateTime(int? unixTimeStamp);
|
string UnixTimeStampToDateTime(int? unixTimeStamp);
|
||||||
|
|
||||||
#region Mahan
|
|
||||||
|
|
||||||
Task<double> GetCreditAmount();
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
namespace _0_Framework.Application;
|
|
||||||
|
|
||||||
public class SentSmsViewModel
|
|
||||||
{
|
|
||||||
public SentSmsViewModel()
|
|
||||||
{
|
|
||||||
IsSuccedded = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsSuccedded { get; set; }
|
|
||||||
public string Message { get; set; }
|
|
||||||
public byte StatusCode { get; set; }
|
|
||||||
public int MessageId { get; set; }
|
|
||||||
|
|
||||||
public SentSmsViewModel Succedded(byte statusCode, string message, int messageId)
|
|
||||||
{
|
|
||||||
IsSuccedded = true;
|
|
||||||
Message = message;
|
|
||||||
StatusCode = statusCode;
|
|
||||||
MessageId = messageId;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SentSmsViewModel Failed(byte statusCode, string message, int messageId)
|
|
||||||
{
|
|
||||||
IsSuccedded = false;
|
|
||||||
Message = message;
|
|
||||||
StatusCode = statusCode;
|
|
||||||
MessageId = messageId;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,6 @@ using IPE.SmsIrClient;
|
|||||||
using IPE.SmsIrClient.Models.Requests;
|
using IPE.SmsIrClient.Models.Requests;
|
||||||
using IPE.SmsIrClient.Models.Results;
|
using IPE.SmsIrClient.Models.Results;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
||||||
|
|
||||||
|
|
||||||
namespace _0_Framework.Application.Sms;
|
namespace _0_Framework.Application.Sms;
|
||||||
@@ -17,14 +16,10 @@ namespace _0_Framework.Application.Sms;
|
|||||||
public class SmsService : ISmsService
|
public class SmsService : ISmsService
|
||||||
{
|
{
|
||||||
private readonly IConfiguration _configuration;
|
private readonly IConfiguration _configuration;
|
||||||
public SmsIr SmsIr { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public SmsService(IConfiguration configuration)
|
public SmsService(IConfiguration configuration)
|
||||||
{
|
{
|
||||||
_configuration = configuration;
|
_configuration = configuration;
|
||||||
SmsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Send(string number, string message)
|
public void Send(string number, string message)
|
||||||
@@ -115,31 +110,6 @@ public class SmsService : ISmsService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<SentSmsViewModel> SendVerifyCodeToClient(string number, string code)
|
|
||||||
{
|
|
||||||
SmsIr smsIr = new SmsIr("Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
|
||||||
var result = new SentSmsViewModel();
|
|
||||||
//var bulkSendResult = smsIr.BulkSendAsync(95007079000006, "your text message", new string[] { "9120000000" });
|
|
||||||
|
|
||||||
var sendResult = await smsIr.VerifySendAsync(number, 768382, new VerifySendParameter[] { new VerifySendParameter("VerificationCode", code) });
|
|
||||||
Thread.Sleep(2000);
|
|
||||||
|
|
||||||
if (sendResult.Message == "موفق")
|
|
||||||
{
|
|
||||||
var status = sendResult.Status;
|
|
||||||
var message = sendResult.Message;
|
|
||||||
var messaeId = sendResult.Data.MessageId;
|
|
||||||
return result.Succedded(status, message, messaeId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var status = sendResult.Status;
|
|
||||||
var message = sendResult.Message;
|
|
||||||
var messaeId = sendResult.Data.MessageId;
|
|
||||||
return result.Failed(status, message, messaeId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool SendAccountsInfo(string number, string fullName, string userName)
|
public bool SendAccountsInfo(string number, string fullName, string userName)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -315,23 +285,4 @@ public class SmsService : ISmsService
|
|||||||
//var tokenService = new Token();
|
//var tokenService = new Token();
|
||||||
//return tokenService.GetToken("x-api-key", "Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
//return tokenService.GetToken("x-api-key", "Og5M562igmzJRhQPnq0GdtieYdLgtfikjzxOmeQBPxJjZtyge5Klc046Lfw1mxSa");
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Mahan
|
|
||||||
|
|
||||||
public async Task<double> GetCreditAmount()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var credit = await SmsIr.GetCreditAsync();
|
|
||||||
return (double)credit.Data;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,24 +14,14 @@ public static class StaticWorkshopAccounts
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static List<long> SelectedAccountsRoleIds = [3, 5, 7, 8];
|
public static List<long> SelectedAccountsRoleIds = [3, 5, 7, 8];
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// لیستی آی دی نقش هایی که دردسترسی به تب افزودن پرسنل و مدارک کلاینت دارند
|
|
||||||
/// 3 : قرارداد ارشد
|
|
||||||
/// 5 : قرارداد ساده
|
|
||||||
/// 19 : برنامه نویسان
|
|
||||||
/// 1 : مدیر سیستم
|
|
||||||
/// </summary>
|
|
||||||
public static List<long> EmployeeDocumentWorkFlowRoleIds = [1,3, 5, 19];
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// لیست اکانتهایی که به همه کارگاه ها باید دسترسی داشته باشند
|
/// لیست اکانتهایی که به همه کارگاه ها باید دسترسی داشته باشند
|
||||||
/// 2 - صادق فرخی
|
/// 2 - صادق فرخی
|
||||||
/// 3 - میلاد مصباح
|
/// 3 - میلاد مصباح
|
||||||
/// 380 - افروز نظری
|
/// 380 - افروز نظری
|
||||||
/// 381 - مهدی قربانی
|
/// 381 - مهدی قربانی
|
||||||
/// 392 - عمار حسن دوست
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static List<long> StaticAccountIds = [2, 3, 380, 381, 392];
|
public static List<long> StaticAccountIds = [2, 3, 380, 381];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// این تاریخ در جدول اکانت لفت ورک به این معنیست
|
/// این تاریخ در جدول اکانت لفت ورک به این معنیست
|
||||||
|
|||||||
@@ -52,81 +52,81 @@ public static class Tools
|
|||||||
/// <param name="endDate"></param>
|
/// <param name="endDate"></param>
|
||||||
/// <param name="employeeId"></param>
|
/// <param name="employeeId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static (int countWorkingDays, DateTime startWork, DateTime endWork, bool hasStartWorkInMonth, bool hasLeftWorkInMonth) GetEmployeeInsuranceWorkingDays(DateTime startWork, DateTime? leftWork, DateTime startDate,
|
public static (int countWorkingDays,DateTime startWork,DateTime endWork,bool hasStartWorkInMonth,bool hasLeftWorkInMonth) GetEmployeeInsuranceWorkingDays(DateTime startWork,DateTime? leftWork,DateTime startDate,
|
||||||
DateTime endDate, long employeeId)
|
DateTime endDate,long employeeId)
|
||||||
{
|
{
|
||||||
DateTime start = startDate;
|
DateTime start = startDate;
|
||||||
DateTime end = endDate;
|
DateTime end = endDate;
|
||||||
bool startWorkInMonth = false;
|
bool startWorkInMonth = false;
|
||||||
bool endWorkInMonth = false;
|
bool endWorkInMonth = false;
|
||||||
|
|
||||||
//اگر شروع بکار پرسنل در ماه مشخص شده لیست بیمه بود
|
//اگر شروع بکار پرسنل در ماه مشخص شده لیست بیمه بود
|
||||||
if (startWork >= startDate)
|
if (startWork >= startDate)
|
||||||
{
|
{
|
||||||
start = startWork;
|
start = startWork;
|
||||||
startWorkInMonth = true;
|
startWorkInMonth = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (leftWork == null)
|
if(leftWork == null)
|
||||||
leftWork = DateTime.MinValue;
|
leftWork = DateTime.MinValue;
|
||||||
//اگر ترک کار پرسنل در ماه مشخص شده لیست بیمه بود
|
//اگر ترک کار پرسنل در ماه مشخص شده لیست بیمه بود
|
||||||
if (leftWork != DateTime.MinValue && leftWork.Value < endDate)
|
if (leftWork != DateTime.MinValue && leftWork.Value < endDate)
|
||||||
{
|
{
|
||||||
end = leftWork.Value;
|
end = leftWork.Value;
|
||||||
endWorkInMonth = true;
|
endWorkInMonth = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int countDays = (int)(end - start).TotalDays + 1;
|
int countDays = (int)(end - start).TotalDays +1;
|
||||||
|
|
||||||
|
|
||||||
//روزهای کارکرد پرسنل با آی دی های زیر دستی تعریف شد
|
//روزهای کارکرد پرسنل با آی دی های زیر دستی تعریف شد
|
||||||
switch (employeeId)
|
switch (employeeId)
|
||||||
{
|
{
|
||||||
|
|
||||||
//case 3812://ثابت- کسری حاجی پور
|
//case 3812://ثابت- کسری حاجی پور
|
||||||
// countWorkingDays = 15;
|
// countWorkingDays = 15;
|
||||||
// break;
|
// break;
|
||||||
case 40463://ثابت
|
case 40463://ثابت
|
||||||
countDays = 10;
|
countDays = 10;
|
||||||
break;
|
break;
|
||||||
case 40469://ثابت
|
case 40469://ثابت
|
||||||
countDays = 7;
|
countDays = 7;
|
||||||
break;
|
break;
|
||||||
//case 9950://ثابت
|
//case 9950://ثابت
|
||||||
// countDays = 15;
|
// countDays = 15;
|
||||||
//break;
|
//break;
|
||||||
case 9640://ثابت
|
case 9640://ثابت
|
||||||
countDays = 15;
|
countDays = 15;
|
||||||
break;
|
break;
|
||||||
case 40998://ثابت
|
case 40998://ثابت
|
||||||
countDays = 15;
|
countDays = 15;
|
||||||
break;
|
break;
|
||||||
case 6219://ثابت
|
case 6219://ثابت
|
||||||
countDays = 15;
|
countDays = 15;
|
||||||
break;
|
break;
|
||||||
//case 7897://ثابت
|
//case 7897://ثابت
|
||||||
// countWorkingDays = 15;
|
// countWorkingDays = 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return (countDays, start, end, startWorkInMonth, endWorkInMonth);
|
return (countDays,start,end,startWorkInMonth,endWorkInMonth);
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// محاسبه سن
|
/// محاسبه سن
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="startDate"></param>
|
/// <param name="startDate"></param>
|
||||||
/// <param name="endDate"></param>
|
/// <param name="endDate"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static (int yearCount, int monthCount, int dayCount) GetAge(DateTime startDate, DateTime endDate)
|
public static (int yearCount, int monthCount, int dayCount) GetAge(DateTime startDate, DateTime endDate)
|
||||||
{
|
{
|
||||||
|
|
||||||
var startFa = startDate.ToFarsi();
|
var startFa = startDate.ToFarsi();
|
||||||
int startYear = Convert.ToInt32(startFa.Substring(0, 4));
|
int startYear = Convert.ToInt32(startFa.Substring(0, 4));
|
||||||
int startMonth = Convert.ToInt32(startFa.Substring(5, 2));
|
int startMonth = Convert.ToInt32(startFa.Substring(5, 2));
|
||||||
int startDay = Convert.ToInt32(startFa.Substring(8, 2));
|
int startDay = Convert.ToInt32(startFa.Substring(8, 2));
|
||||||
var start = new PersianDateTime(startYear, startMonth, startDay);
|
var start = new PersianDateTime(startYear, startMonth, startDay);
|
||||||
|
|
||||||
|
|
||||||
var endFa = endDate.ToFarsi();
|
var endFa = endDate.ToFarsi();
|
||||||
int endYear = Convert.ToInt32(endFa.Substring(0, 4));
|
int endYear = Convert.ToInt32(endFa.Substring(0, 4));
|
||||||
int endMonth = Convert.ToInt32(endFa.Substring(5, 2));
|
int endMonth = Convert.ToInt32(endFa.Substring(5, 2));
|
||||||
@@ -141,7 +141,7 @@ public static class Tools
|
|||||||
if (firstYearCounter > end)
|
if (firstYearCounter > end)
|
||||||
{
|
{
|
||||||
start = start.AddYears(-1);
|
start = start.AddYears(-1);
|
||||||
|
|
||||||
var endMonthCounter = new PersianDateTime(end.Year, end.Month, start.Day);
|
var endMonthCounter = new PersianDateTime(end.Year, end.Month, start.Day);
|
||||||
|
|
||||||
for (var monthCounter = start; monthCounter <= end; monthCounter = monthCounter.AddMonths(1))
|
for (var monthCounter = start; monthCounter <= end; monthCounter = monthCounter.AddMonths(1))
|
||||||
@@ -193,7 +193,7 @@ public static class Tools
|
|||||||
if (yearCouner.Year == end.Year)
|
if (yearCouner.Year == end.Year)
|
||||||
{
|
{
|
||||||
|
|
||||||
var endMonthCounter = new PersianDateTime(end.Year, end.Month, (yearCouner.Day > end.Day ? end.Day : yearCouner.Day));
|
var endMonthCounter = new PersianDateTime(end.Year, end.Month, (yearCouner.Day > end.Day ? end.Day : yearCouner.Day));
|
||||||
|
|
||||||
if (yearCouner.Day <= end.Day)
|
if (yearCouner.Day <= end.Day)
|
||||||
{
|
{
|
||||||
@@ -244,7 +244,7 @@ public static class Tools
|
|||||||
|
|
||||||
Console.ResetColor();
|
Console.ResetColor();
|
||||||
Console.WriteLine($"old: [{years} year] ، [{months} month] ، [{days} day]");
|
Console.WriteLine($"old: [{years} year] ، [{months} month] ، [{days} day]");
|
||||||
return (years, months, days);
|
return (years,months,days);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToFarsi(this DateTime? date)
|
public static string ToFarsi(this DateTime? date)
|
||||||
@@ -397,9 +397,9 @@ public static class Tools
|
|||||||
|
|
||||||
public static DateTime ToGeorgianDateTime(this string persianDate)
|
public static DateTime ToGeorgianDateTime(this string persianDate)
|
||||||
{
|
{
|
||||||
|
persianDate = persianDate.ToEnglishNumber();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
persianDate = persianDate.ToEnglishNumber();
|
|
||||||
var year = Convert.ToInt32(persianDate.Substring(0, 4));
|
var year = Convert.ToInt32(persianDate.Substring(0, 4));
|
||||||
var month = Convert.ToInt32(persianDate.Substring(5, 2));
|
var month = Convert.ToInt32(persianDate.Substring(5, 2));
|
||||||
var day = Convert.ToInt32(persianDate.Substring(8, 2));
|
var day = Convert.ToInt32(persianDate.Substring(8, 2));
|
||||||
@@ -598,90 +598,90 @@ public static class Tools
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static int YearTotalDays(this string date)
|
public static int YearTotalDays(this string date)
|
||||||
{
|
{
|
||||||
int y2 = 366;
|
int y2 = 365;
|
||||||
var year = Convert.ToInt32(date.Substring(0, 4));
|
var year = Convert.ToInt32(date.Substring(0, 4));
|
||||||
|
|
||||||
|
|
||||||
switch (year)
|
switch (year)
|
||||||
{
|
{
|
||||||
case 1346:
|
case 1346:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1350:
|
case 1350:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1354:
|
case 1354:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1358:
|
case 1358:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1362:
|
case 1362:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1366:
|
case 1366:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1370:
|
case 1370:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1375:
|
case 1375:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1379:
|
case 1379:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1383:
|
case 1383:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1387:
|
case 1387:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1391:
|
case 1391:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1395:
|
case 1395:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1399:
|
case 1399:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1403:
|
case 1403:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1408:
|
case 1408:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1412:
|
case 1412:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1416:
|
case 1416:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1420:
|
case 1420:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1424:
|
case 1424:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1428:
|
case 1428:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1432:
|
case 1432:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1436:
|
case 1436:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1441:
|
case 1441:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
case 1445:
|
case 1445:
|
||||||
y2 = 367;
|
y2 = 366;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
y2 = 366;
|
y2 = 365;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1267,16 +1267,16 @@ public static class Tools
|
|||||||
var part5 = parts[5].Substring(0, 2);
|
var part5 = parts[5].Substring(0, 2);
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
PersianCalendar pc = new PersianCalendar();
|
PersianCalendar pc = new PersianCalendar();
|
||||||
dateTime = pc.ToDateTime(int.Parse(parts[1]), int.Parse(parts[2]), int.Parse(parts[3]), int.Parse(parts[4]), int.Parse(part5), 0, 0, 0);
|
dateTime = pc.ToDateTime(int.Parse(parts[1]), int.Parse(parts[2]), int.Parse(parts[3]), int.Parse(parts[4]), int.Parse(part5), 0, 0, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1384,8 +1384,8 @@ public static class Tools
|
|||||||
}
|
}
|
||||||
public static DateTime FindFirstDayOfMonthGr(this DateTime date)
|
public static DateTime FindFirstDayOfMonthGr(this DateTime date)
|
||||||
{
|
{
|
||||||
var pc = new PersianCalendar();
|
var pc = new PersianCalendar();
|
||||||
return ($"{pc.GetYear(date)}/{pc.GetMonth(date):00}/01").ToGeorgianDateTime();
|
return ($"{pc.GetYear(date)}/{pc.GetMonth(date):00}/01").ToGeorgianDateTime();
|
||||||
}
|
}
|
||||||
#region Mahan
|
#region Mahan
|
||||||
|
|
||||||
@@ -1588,19 +1588,19 @@ public static class Tools
|
|||||||
|
|
||||||
public static TimeOnly CalculateOffset(ICollection<CustomizeSifts> shiftDetailsRegularShifts)
|
public static TimeOnly CalculateOffset(ICollection<CustomizeSifts> shiftDetailsRegularShifts)
|
||||||
{
|
{
|
||||||
if (!shiftDetailsRegularShifts.Any())
|
if (!shiftDetailsRegularShifts.Any())
|
||||||
{
|
{
|
||||||
return TimeOnly.MinValue;
|
return TimeOnly.MinValue;
|
||||||
}
|
}
|
||||||
var date = new DateOnly();
|
var date = new DateOnly();
|
||||||
var firstStartShift = new DateTime(date, shiftDetailsRegularShifts.MinBy(x => x.Placement).StartTime);
|
var firstStartShift = new DateTime(date, shiftDetailsRegularShifts.MinBy(x => x.Placement).StartTime);
|
||||||
var lastEndShift = new DateTime(date, shiftDetailsRegularShifts.MaxBy(x => x.Placement).EndTime);
|
var lastEndShift = new DateTime(date, shiftDetailsRegularShifts.MaxBy(x => x.Placement).EndTime);
|
||||||
if (lastEndShift > firstStartShift)
|
if (lastEndShift > firstStartShift)
|
||||||
firstStartShift = firstStartShift.AddDays(1);
|
firstStartShift = firstStartShift.AddDays(1);
|
||||||
var offSet = (firstStartShift - lastEndShift).Divide(2);
|
var offSet = (firstStartShift - lastEndShift).Divide(2);
|
||||||
return TimeOnly.FromDateTime(lastEndShift.Add(offSet));
|
return TimeOnly.FromDateTime(lastEndShift.Add(offSet));
|
||||||
}
|
}
|
||||||
public static DateTime GetNextDayOfWeek(this DateTime date, DayOfWeek dayOfWeek)
|
public static DateTime GetNextDayOfWeek(this DateTime date, DayOfWeek dayOfWeek)
|
||||||
{
|
{
|
||||||
int numberOfNextDayOfWeek = ((int)dayOfWeek - (int)date.DayOfWeek + 7) % 7;
|
int numberOfNextDayOfWeek = ((int)dayOfWeek - (int)date.DayOfWeek + 7) % 7;
|
||||||
return date.AddDays(numberOfNextDayOfWeek == 0 ? 7 : numberOfNextDayOfWeek);
|
return date.AddDays(numberOfNextDayOfWeek == 0 ? 7 : numberOfNextDayOfWeek);
|
||||||
@@ -1680,10 +1680,6 @@ public static class Tools
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
@@ -1776,75 +1772,75 @@ public static class Tools
|
|||||||
public static string ToFarsiHoursAndMinutes(int hours, int minutes, string emptyValue = "")
|
public static string ToFarsiHoursAndMinutes(int hours, int minutes, string emptyValue = "")
|
||||||
{
|
{
|
||||||
|
|
||||||
string message = emptyValue;
|
string message = emptyValue;
|
||||||
if (hours > 0 && minutes > 0)
|
if (hours > 0 && minutes > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
message = hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه";
|
message = hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه";
|
||||||
}
|
}
|
||||||
else if (hours > 0 && minutes == 0)
|
else if (hours > 0 && minutes == 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
message = hours + " " + "ساعت ";
|
message = hours + " " + "ساعت ";
|
||||||
}
|
}
|
||||||
else if (hours == 0 && minutes > 0)
|
else if (hours == 0 && minutes > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
message = minutes + " " + "دقیقه";
|
message = minutes + " " + "دقیقه";
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
public static string ToFarsiHoursAndMinutes(this TimeSpan timeSpan, string emptyValue = "")
|
public static string ToFarsiHoursAndMinutes(this TimeSpan timeSpan, string emptyValue = "")
|
||||||
{
|
{
|
||||||
var hours = (int)timeSpan.TotalHours;
|
var hours = (int)timeSpan.TotalHours;
|
||||||
var minutes = timeSpan.Minutes;
|
var minutes = timeSpan.Minutes;
|
||||||
string message = emptyValue;
|
string message = emptyValue;
|
||||||
if (hours > 0 && minutes > 0)
|
if (hours > 0 && minutes > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
message = hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه";
|
message = hours + " " + "ساعت و" + " " + minutes + " " + "دقیقه";
|
||||||
}
|
}
|
||||||
else if (hours > 0 && minutes == 0)
|
else if (hours > 0 && minutes == 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
message = hours + " " + "ساعت ";
|
message = hours + " " + "ساعت ";
|
||||||
}
|
}
|
||||||
else if (hours == 0 && minutes > 0)
|
else if (hours == 0 && minutes > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
message = minutes + " " + "دقیقه";
|
message = minutes + " " + "دقیقه";
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
public static string ToFarsiDaysAndHoursAndMinutes(this TimeSpan timeSpan, string emptyValue = "")
|
public static string ToFarsiDaysAndHoursAndMinutes(this TimeSpan timeSpan, string emptyValue = "")
|
||||||
{
|
{
|
||||||
var hours = (int)timeSpan.TotalHours;
|
var hours = (int)timeSpan.TotalHours;
|
||||||
var minutes = timeSpan.Minutes;
|
var minutes = timeSpan.Minutes;
|
||||||
var days = hours / 24;
|
var days = hours / 24;
|
||||||
hours = hours % 24;
|
hours = hours % 24;
|
||||||
string message = "";
|
string message = "";
|
||||||
|
|
||||||
if (days > 0)
|
if (days > 0)
|
||||||
message += days + " " + "روز";
|
message += days + " " + "روز";
|
||||||
if (hours > 0)
|
if (hours > 0)
|
||||||
if (message == "")
|
if (message == "")
|
||||||
message += hours + " " + "ساعت";
|
message += hours + " " + "ساعت";
|
||||||
else
|
else
|
||||||
message += " و " + hours + " " + "ساعت";
|
message += " و " + hours + " " + "ساعت";
|
||||||
if (minutes > 0)
|
if (minutes > 0)
|
||||||
if (message == "")
|
if (message == "")
|
||||||
message += minutes + " " + "دقیقه";
|
message += minutes + " " + "دقیقه";
|
||||||
else
|
else
|
||||||
message += " و " + minutes + " " + "دقیقه";
|
message += " و " + minutes + " " + "دقیقه";
|
||||||
|
|
||||||
if (message == "")
|
if (message == "")
|
||||||
message = emptyValue;
|
message = emptyValue;
|
||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool ArePropertiesEqual<T>(this T obj1, T obj2)
|
public static bool ArePropertiesEqual<T>(this T obj1, T obj2)
|
||||||
{
|
{
|
||||||
// If either object is null, they can't be equal
|
// If either object is null, they can't be equal
|
||||||
if (obj1 == null || obj2 == null)
|
if (obj1 == null || obj2 == null)
|
||||||
@@ -1877,44 +1873,5 @@ public static class Tools
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Davoodi
|
|
||||||
|
|
||||||
public static List<string> GetDaysBetweenDateGeorgian(DateTime startDate, DateTime? endDate)
|
|
||||||
{
|
|
||||||
var days = new List<string>();
|
|
||||||
|
|
||||||
if (endDate == null)
|
|
||||||
endDate = DateTime.Now;
|
|
||||||
|
|
||||||
var persianStartDate = new MD.PersianDateTime.Standard.PersianDateTime(startDate);
|
|
||||||
var persianEndDate = new MD.PersianDateTime.Standard.PersianDateTime(endDate);
|
|
||||||
|
|
||||||
|
|
||||||
while (persianEndDate - persianStartDate >= TimeSpan.FromDays(0))
|
|
||||||
{
|
|
||||||
days.Add(persianStartDate.ToShortDateString());
|
|
||||||
persianStartDate = persianStartDate.AddDays(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return days;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int GetWorkingDaysDifference(DateTime? fromDate, DateTime? toDate)
|
|
||||||
{
|
|
||||||
//var workingDays = PersianDateExtensions.GetWorkingDays(new PersianDateTime(fromDate.ToFarsi()), new PersianDateTime(toDate.ToFarsi()), true);
|
|
||||||
var workingDays = PersianDateExtensions.GetWorkingDays((DateTime)fromDate, (DateTime)toDate, true);
|
|
||||||
|
|
||||||
|
|
||||||
if (fromDate > toDate)
|
|
||||||
workingDays *= -1;
|
|
||||||
|
|
||||||
|
|
||||||
return workingDays;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -32,22 +32,20 @@ public class UidService : IUidService
|
|||||||
var json = JsonConvert.SerializeObject(request);
|
var json = JsonConvert.SerializeObject(request);
|
||||||
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
||||||
|
|
||||||
var requestResult = await _httpClient.PostAsync("person/v2", contentType);
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
var requestResult = await _httpClient.PostAsync("person/v2", contentType);
|
||||||
if (!requestResult.IsSuccessStatusCode)
|
if (!requestResult.IsSuccessStatusCode)
|
||||||
return null;
|
return null;
|
||||||
var responseResult = await requestResult.Content.ReadFromJsonAsync<PersonalInfoResponse>();
|
var responseResult = await requestResult.Content.ReadFromJsonAsync<PersonalInfoResponse>();
|
||||||
if (responseResult.BasicInformation != null)
|
responseResult.BasicInformation.FirstName = responseResult.BasicInformation.FirstName.ToPersian();
|
||||||
{
|
responseResult.BasicInformation.LastName = responseResult.BasicInformation.LastName.ToPersian();
|
||||||
responseResult.BasicInformation.FirstName = responseResult.BasicInformation.FirstName?.ToPersian();
|
responseResult.BasicInformation.FatherName = responseResult.BasicInformation.FatherName.ToPersian();
|
||||||
responseResult.BasicInformation.LastName = responseResult.BasicInformation.LastName?.ToPersian();
|
|
||||||
responseResult.BasicInformation.FatherName = responseResult.BasicInformation.FatherName?.ToPersian();
|
|
||||||
}
|
|
||||||
|
|
||||||
return responseResult;
|
return responseResult;
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception)
|
||||||
{
|
{
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -65,12 +63,19 @@ public class UidService : IUidService
|
|||||||
};
|
};
|
||||||
var json = JsonConvert.SerializeObject(request);
|
var json = JsonConvert.SerializeObject(request);
|
||||||
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType);
|
||||||
|
if (!requestResult.IsSuccessStatusCode)
|
||||||
|
return null;
|
||||||
|
|
||||||
var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType);
|
var responseResult = await requestResult.Content.ReadFromJsonAsync<MatchMobileWithNationalCodeResponse>();
|
||||||
if (!requestResult.IsSuccessStatusCode)
|
return responseResult;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
var responseResult = await requestResult.Content.ReadFromJsonAsync<MatchMobileWithNationalCodeResponse>();
|
|
||||||
return responseResult;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,8 +8,7 @@ namespace _0_Framework.Application
|
|||||||
Client,
|
Client,
|
||||||
SubAccount,
|
SubAccount,
|
||||||
Camera,
|
Camera,
|
||||||
Admin,
|
Admin
|
||||||
System
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,11 +55,4 @@ public interface IAccountApplication
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
OperationResult DirectCameraLogin(long cameraAccountId);
|
OperationResult DirectCameraLogin(long cameraAccountId);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// چک میکند که آیا اکانتی با این نام کاربری وجود دارد یا نه
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userName"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public bool CheckExistClientAccount(string userName);
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using IPE.SmsIrClient.Models.Results;
|
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
|
||||||
namespace AccountManagement.Application.Contracts.Task;
|
namespace AccountManagement.Application.Contracts.Task;
|
||||||
@@ -20,9 +19,9 @@ public class CreateTask
|
|||||||
#region Task Schedule
|
#region Task Schedule
|
||||||
|
|
||||||
public string ScheduleCount { get; set; }
|
public string ScheduleCount { get; set; }
|
||||||
public TaskScheduleType ScheduleType { get; set; }
|
public string ScheduleType{ get; set; }
|
||||||
public bool HasSchedule { get; set; }
|
public bool HasSchedule { get; set; }
|
||||||
public TaskScheduleUnitType ScheduleUnitType { get; set; }
|
public string ScheduleUnitType { get; set; }
|
||||||
public string ScheduleUnitNumber { get; set; }
|
public string ScheduleUnitNumber { get; set; }
|
||||||
public long TaskScheduleId { get; set; }
|
public long TaskScheduleId { get; set; }
|
||||||
|
|
||||||
@@ -31,18 +30,4 @@ public class CreateTask
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum TaskScheduleType
|
|
||||||
{
|
|
||||||
Limited,
|
|
||||||
Unlimited
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum TaskScheduleUnitType
|
|
||||||
{
|
|
||||||
Day,
|
|
||||||
Week,
|
|
||||||
Month,
|
|
||||||
Year
|
|
||||||
}
|
}
|
||||||
@@ -20,5 +20,4 @@ public class EditTask:CreateTask
|
|||||||
public long? TicketId { get; set; }
|
public long? TicketId { get; set; }
|
||||||
public List<AccountViewModel> AssignsLists { get; set; }
|
public List<AccountViewModel> AssignsLists { get; set; }
|
||||||
public bool HasTicket { get; set; }
|
public bool HasTicket { get; set; }
|
||||||
public long TaskScheduleId { get; set; }
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using AccountManagement.Application.Contracts.Assign;
|
using AccountManagement.Application.Contracts.Assign;
|
||||||
using AccountManagement.Application.Contracts.TaskMessage;
|
using AccountManagement.Application.Contracts.TaskMessage;
|
||||||
@@ -25,13 +24,6 @@ public interface ITaskApplication
|
|||||||
List<TaskViewModel> GetSentTasks(TaskSearchModel searchModel);
|
List<TaskViewModel> GetSentTasks(TaskSearchModel searchModel);
|
||||||
List<TaskViewModel> GetTasksHaveTicket(TaskSearchModel searchModel);
|
List<TaskViewModel> GetTasksHaveTicket(TaskSearchModel searchModel);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// لیست تسک های دوره ای ایجاد شده توسط کاربر
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="searchModel"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
List<TaskViewModel> GetTaskScheduleList(TaskSearchModel searchModel);
|
|
||||||
|
|
||||||
// گرفتن مهلت برای یک وظیفه
|
// گرفتن مهلت برای یک وظیفه
|
||||||
OperationResult CreateRequestTime(CreateTaskTimeRequest command);
|
OperationResult CreateRequestTime(CreateTaskTimeRequest command);
|
||||||
List<TaskViewModel> GetRequestTaskHasTicket(TaskSearchModel searchModel);
|
List<TaskViewModel> GetRequestTaskHasTicket(TaskSearchModel searchModel);
|
||||||
@@ -54,10 +46,10 @@ public interface ITaskApplication
|
|||||||
OperationResult CreateTaskByPosition(CreateTask command, List<long> positionIds);
|
OperationResult CreateTaskByPosition(CreateTask command, List<long> positionIds);
|
||||||
List<TaskViewModel> GetRequestedTasks(TaskSearchModel searchModel);
|
List<TaskViewModel> GetRequestedTasks(TaskSearchModel searchModel);
|
||||||
List<TaskViewModel> AllRequestedTasks(TaskSearchModel searchModel);
|
List<TaskViewModel> AllRequestedTasks(TaskSearchModel searchModel);
|
||||||
Task<int> GetRequestedTasksCount();
|
int GetRequestedTasksCount();
|
||||||
|
|
||||||
Task<int> TasksHaveTicketCounts(long userId);
|
int TasksHaveTicketCounts(long userId);
|
||||||
Task<int> TasksHaveTicketRequestsCount(long userId);
|
int TasksHaveTicketRequestsCount(long userId);
|
||||||
|
|
||||||
List<TaskMessageViewModel> GetTaskMessages(long assignId);
|
List<TaskMessageViewModel> GetTaskMessages(long assignId);
|
||||||
|
|
||||||
@@ -71,14 +63,16 @@ public interface ITaskApplication
|
|||||||
|
|
||||||
List<AssignViewModel> GetAssignsByTaskId(long taskId);
|
List<AssignViewModel> GetAssignsByTaskId(long taskId);
|
||||||
|
|
||||||
Task<int> RequestedAndOverdueTasksCount(long userId);
|
int RequestedAndOverdueTasksCount(long userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد تسک های شخصی و دریافتی برای امروز و یا عقب افتاده
|
///تعداد تسک های شخصی و دریافتی برای امروز و یا عقب افتاده
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> OverdueTasksCount(long userId);
|
int OverdueTasksCount(long userId);
|
||||||
|
|
||||||
|
|
||||||
}
|
//متد انتقال داده از تسک به ارجاعی ها
|
||||||
|
//OperationResult MoveDataFRomTaskToAssign();
|
||||||
|
}
|
||||||
@@ -50,7 +50,5 @@ public class TaskViewModel
|
|||||||
public bool CanCheckRequests { get; set; }
|
public bool CanCheckRequests { get; set; }
|
||||||
public AssignViewModel AssignedReceiverViewModel { get; set; }
|
public AssignViewModel AssignedReceiverViewModel { get; set; }
|
||||||
|
|
||||||
public TaskScheduleType ScheduleType { get; set; }
|
|
||||||
public TaskScheduleUnitType ScheduleUnitType { get; set; }
|
|
||||||
public long TaskScheduleId { get; set; }
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using AccountManagement.Application.Contracts.Task;
|
using AccountManagement.Application.Contracts.Task;
|
||||||
|
|
||||||
namespace AccountManagement.Application.Contracts.TaskSchedule;
|
namespace AccountManagement.Application.Contracts.TaskSchedule;
|
||||||
@@ -8,8 +6,7 @@ namespace AccountManagement.Application.Contracts.TaskSchedule;
|
|||||||
public interface ITaskScheduleApplication
|
public interface ITaskScheduleApplication
|
||||||
{
|
{
|
||||||
OperationResult Create(CreateTask command);
|
OperationResult Create(CreateTask command);
|
||||||
|
OperationResult CreateLimitedTasks(CreateTask command);
|
||||||
|
OperationResult CreateUnlimitedTasks(CreateTask command);
|
||||||
|
|
||||||
Task<TaskScheduleDetailsViewModel> GetDetails(long id);
|
|
||||||
|
|
||||||
OperationResult Remove(long taskScheduleId);
|
|
||||||
}
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using AccountManagement.Application.Contracts.Media;
|
|
||||||
using AccountManagement.Application.Contracts.Task;
|
|
||||||
|
|
||||||
namespace AccountManagement.Application.Contracts.TaskSchedule;
|
|
||||||
|
|
||||||
public class TaskScheduleDetailsViewModel
|
|
||||||
{
|
|
||||||
public string SenderName { get; set; }
|
|
||||||
public List<string> AssignedName { get; set; }
|
|
||||||
public TaskScheduleType TaskScheduleType { get; set; }
|
|
||||||
public TaskScheduleUnitType TaskScheduleUnitType { get; set; }
|
|
||||||
public string UnitNumber { get; set; }
|
|
||||||
public string CreationDateFa { get; set; }
|
|
||||||
public string ContractingPartyName { get; set; }
|
|
||||||
public string Title { get; set; }
|
|
||||||
public string Description { get; set; }
|
|
||||||
public List<MediaViewModel> Medias { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -549,8 +549,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
return operation.Succcedded(2);
|
return operation.Succcedded(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AccountLeftWorkViewModel WorkshopList(long accountId)
|
||||||
public AccountLeftWorkViewModel WorkshopList(long accountId)
|
|
||||||
{
|
{
|
||||||
string fullname = this._accountRepository.GetById(accountId).Fullname;
|
string fullname = this._accountRepository.GetById(accountId).Fullname;
|
||||||
List<WorkshopAccountlistViewModel> source =_accountLeftworkRepository.WorkshopList(accountId);
|
List<WorkshopAccountlistViewModel> source =_accountLeftworkRepository.WorkshopList(accountId);
|
||||||
@@ -786,10 +785,4 @@ public class AccountApplication : IAccountApplication
|
|||||||
//}
|
//}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public bool CheckExistClientAccount(string userName)
|
|
||||||
{
|
|
||||||
return _accountRepository.CheckExistClientAccount(userName);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,6 @@ using System.Collections.Generic;
|
|||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
|
|
||||||
namespace AccountManagement.Application;
|
namespace AccountManagement.Application;
|
||||||
@@ -509,11 +508,6 @@ public class TaskApplication : ITaskApplication
|
|||||||
return _taskRepository.GetTasksHaveTicket(searchModel);
|
return _taskRepository.GetTasksHaveTicket(searchModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TaskViewModel> GetTaskScheduleList(TaskSearchModel searchModel)
|
|
||||||
{
|
|
||||||
return _taskRepository.GetTaskScheduleList(searchModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
//ساخت درخواست مهلت
|
//ساخت درخواست مهلت
|
||||||
public OperationResult CreateRequestTime(CreateTaskTimeRequest command)
|
public OperationResult CreateRequestTime(CreateTaskTimeRequest command)
|
||||||
{
|
{
|
||||||
@@ -595,9 +589,6 @@ public class TaskApplication : ITaskApplication
|
|||||||
{
|
{
|
||||||
return operation.Failed("تاریخی برای درخواست وظیفه ثبت نشده است");
|
return operation.Failed("تاریخی برای درخواست وظیفه ثبت نشده است");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
assign.AcceptTimeRequest();
|
assign.AcceptTimeRequest();
|
||||||
message = string.IsNullOrWhiteSpace(message) ? "درخواست شما مورد تایید قرار گرفت" : message;
|
message = string.IsNullOrWhiteSpace(message) ? "درخواست شما مورد تایید قرار گرفت" : message;
|
||||||
var messageEntity = new TaskMessage(message, "تایید درخواست مهلت", assign.id);
|
var messageEntity = new TaskMessage(message, "تایید درخواست مهلت", assign.id);
|
||||||
@@ -874,14 +865,14 @@ public class TaskApplication : ITaskApplication
|
|||||||
return _taskRepository.AllRequestedTasks(searchModel);
|
return _taskRepository.AllRequestedTasks(searchModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> TasksHaveTicketCounts(long userId)
|
public int TasksHaveTicketCounts(long userId)
|
||||||
{
|
{
|
||||||
return await _taskRepository.TasksHaveTicketCounts(userId);
|
return _taskRepository.TasksHaveTicketCounts(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> TasksHaveTicketRequestsCount(long userId)
|
public int TasksHaveTicketRequestsCount(long userId)
|
||||||
{
|
{
|
||||||
return await _taskRepository.TasksHaveTicketRequestsCount(userId);
|
return _taskRepository.TasksHaveTicketRequestsCount(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -890,9 +881,9 @@ public class TaskApplication : ITaskApplication
|
|||||||
return _taskMessageRepository.GetTaskMessages(assignId);
|
return _taskMessageRepository.GetTaskMessages(assignId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> GetRequestedTasksCount()
|
public int GetRequestedTasksCount()
|
||||||
{
|
{
|
||||||
return await _taskRepository.GetRequestedTasksCount();
|
return _taskRepository.GetRequestedTasksCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult ChangeRequestTimeAndAccept(string time, long taskId, long assignedId, string message)
|
public OperationResult ChangeRequestTimeAndAccept(string time, long taskId, long assignedId, string message)
|
||||||
@@ -1016,15 +1007,15 @@ public class TaskApplication : ITaskApplication
|
|||||||
return _assignRepository.GetAssignsByTaskId(taskId);
|
return _assignRepository.GetAssignsByTaskId(taskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> RequestedAndOverdueTasksCount(long userId)
|
public int RequestedAndOverdueTasksCount(long userId)
|
||||||
{
|
{
|
||||||
return await _taskRepository.RequestedAndOverdueTasksCount(userId);
|
return _taskRepository.RequestedAndOverdueTasksCount(userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> OverdueTasksCount(long userId)
|
public int OverdueTasksCount(long userId)
|
||||||
{
|
{
|
||||||
return await _taskRepository.OverdueTasksCount(userId);
|
return _taskRepository.OverdueTasksCount(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
//public OperationResult MoveDataFRomTaskToAssign()
|
//public OperationResult MoveDataFRomTaskToAssign()
|
||||||
|
|||||||
@@ -4,355 +4,222 @@ using AccountManagement.Application.Contracts.TaskSchedule;
|
|||||||
using AccountManagement.Domain.TaskScheduleAgg;
|
using AccountManagement.Domain.TaskScheduleAgg;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Transactions;
|
|
||||||
using AccountManagement.Domain.TaskAgg;
|
|
||||||
using Company.Domain.HolidayItemAgg;
|
using Company.Domain.HolidayItemAgg;
|
||||||
|
|
||||||
namespace AccountManagement.Application;
|
namespace AccountManagement.Application;
|
||||||
|
|
||||||
public class TaskScheduleApplication : ITaskScheduleApplication
|
public class TaskScheduleApplication : ITaskScheduleApplication
|
||||||
{
|
{
|
||||||
private readonly ITaskApplication _taskApplication;
|
private readonly ITaskApplication _taskApplication;
|
||||||
private readonly ITaskScheduleRepository _taskScheduleRepository;
|
private readonly ITaskScheduleRepository _taskScheduleRepository;
|
||||||
private readonly IHolidayItemRepository _holidayItemRepository;
|
private readonly IHolidayItemRepository _holidayItemRepository;
|
||||||
private readonly ITaskRepository _taskRepository;
|
|
||||||
public TaskScheduleApplication(ITaskApplication taskApplication, ITaskScheduleRepository taskScheduleRepository, IHolidayItemRepository holidayItemRepository, ITaskRepository taskRepository)
|
|
||||||
{
|
|
||||||
_taskApplication = taskApplication;
|
|
||||||
_taskScheduleRepository = taskScheduleRepository;
|
|
||||||
_holidayItemRepository = holidayItemRepository;
|
|
||||||
_taskRepository = taskRepository;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OperationResult Create(CreateTask command)
|
public TaskScheduleApplication(ITaskApplication taskApplication, ITaskScheduleRepository taskScheduleRepository, IHolidayItemRepository holidayItemRepository)
|
||||||
{
|
{
|
||||||
OperationResult operation = new OperationResult();
|
_taskApplication = taskApplication;
|
||||||
|
_taskScheduleRepository = taskScheduleRepository;
|
||||||
|
_holidayItemRepository = holidayItemRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OperationResult Create(CreateTask command)
|
||||||
|
{
|
||||||
|
OperationResult operation = new OperationResult();
|
||||||
|
|
||||||
|
|
||||||
if (command.HasSchedule)
|
if (command.HasSchedule)
|
||||||
{
|
{
|
||||||
switch (command.ScheduleType)
|
switch (command.ScheduleType)
|
||||||
{
|
{
|
||||||
case TaskScheduleType.Limited:
|
case "limited":
|
||||||
if (Convert.ToInt32(command.ScheduleCount) > 60)
|
if (Convert.ToInt32(command.ScheduleCount) > 60)
|
||||||
{
|
{
|
||||||
return operation.Failed("تعداد وارد شده بیشتر از حد مجاز است");
|
return operation.Failed("تعداد وارد شده بیشتر از حد مجاز است");
|
||||||
}
|
}
|
||||||
return CreateLimitedTasks(command);
|
return CreateLimitedTasks(command);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TaskScheduleType.Unlimited:
|
case "unlimited":
|
||||||
return CreateUnlimitedTasks(command);
|
return CreateUnlimitedTasks(command);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return operation.Failed("نوع وظیفه محول شده مشخص نمیباشد");
|
return operation.Failed("خطای سیستمی!");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return operation.Failed("این تسک بصورت دوره ای نمیباشد");
|
return operation.Failed("این تسک بصورت زمان بندی شده نمیباشد");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<TaskScheduleDetailsViewModel> GetDetails(long id)
|
public OperationResult CreateLimitedTasks(CreateTask command)
|
||||||
{
|
{
|
||||||
return await _taskScheduleRepository.GetDetails(id);
|
OperationResult operation = new OperationResult();
|
||||||
}
|
if (Convert.ToInt32(command.ScheduleCount) < 1 || string.IsNullOrWhiteSpace(command.ScheduleCount))
|
||||||
|
{
|
||||||
|
return operation.Failed("تعداد وارد شده باید بیشتر از 2 باشد");
|
||||||
|
}
|
||||||
|
|
||||||
public OperationResult Remove(long taskScheduleId)
|
switch (command.ScheduleUnitType)
|
||||||
{
|
{
|
||||||
var op = new OperationResult();
|
case "year":
|
||||||
var taskSchedule = _taskScheduleRepository.Get(taskScheduleId);
|
if (Convert.ToInt32(command.ScheduleCount) != 1)
|
||||||
if (taskSchedule == null)
|
{
|
||||||
return op.Failed("وظیفه مورد نظر یافت نشد");
|
return operation.Failed("دوره نمیتواند بیشتر از 1 سال باشد");
|
||||||
var tasks = _taskRepository.GetTasksByTaskScheduleId(taskScheduleId);
|
}
|
||||||
var assigns = tasks.SelectMany(x => x.Assigns);
|
break;
|
||||||
if (assigns.Any(x => x.IsCanceledRequest || x.IsDone || x.IsCancel || x.TimeRequest || x.AcceptedTimeRequest > 0))
|
case "month":
|
||||||
{
|
if (Convert.ToInt32(command.ScheduleCount) > 12)
|
||||||
taskSchedule.DeActive();
|
{
|
||||||
|
return operation.Failed("بازه وارد شده نا معتبر است");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "week":
|
||||||
|
if (command.ScheduleUnitNumber != "first" && command.ScheduleUnitNumber != "last")
|
||||||
|
{
|
||||||
|
return operation.Failed("بازه وارد شده نا معتبر است");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "day":
|
||||||
|
if (Convert.ToInt32(command.ScheduleUnitNumber) > 29)
|
||||||
|
{
|
||||||
|
return operation.Failed("بازه وارد شده نا معتبر است");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return operation.Failed("نوع بازه مشخص نمیباشد");
|
||||||
|
break;
|
||||||
|
|
||||||
var removableTask = tasks.Where(x=>x.Assigns.All(a=>a.IsDone==false && a.IsCancel == false)).ToList();
|
}
|
||||||
_taskRepository.RemoveRange(removableTask);
|
try
|
||||||
|
{
|
||||||
}
|
DateTime previousDateRaw = command.EndTaskDate.ToEndDayOfGeorgianDateTime();
|
||||||
else
|
DateTime previousDateEdited = command.EndTaskDate.ToEndDayOfGeorgianDateTime();
|
||||||
{
|
|
||||||
_taskScheduleRepository.Remove(taskSchedule);
|
|
||||||
_taskRepository.RemoveRange(tasks);
|
|
||||||
}
|
|
||||||
_taskRepository.SaveChanges();
|
|
||||||
return op.Succcedded();
|
|
||||||
}
|
|
||||||
|
|
||||||
private OperationResult CreateLimitedTasks(CreateTask command)
|
int count = Convert.ToInt32(command.ScheduleCount);
|
||||||
{
|
bool isInt = int.TryParse(command.ScheduleUnitNumber, out int unitNumber);
|
||||||
OperationResult operation = new OperationResult();
|
string kindOfWeekUnit = isInt ? "" : command.ScheduleUnitNumber;
|
||||||
if (Convert.ToInt32(command.ScheduleCount) < 1 || string.IsNullOrWhiteSpace(command.ScheduleCount))
|
var taskSchedule = new TaskSchedule(command.ScheduleCount, command.ScheduleType, command.ScheduleUnitType,
|
||||||
{
|
command.ScheduleUnitNumber, previousDateEdited);
|
||||||
return operation.Failed("تعداد وارد شده باید بیشتر از 2 باشد");
|
_taskScheduleRepository.Create(taskSchedule);
|
||||||
}
|
_taskScheduleRepository.SaveChanges();
|
||||||
if (string.IsNullOrWhiteSpace(command.ScheduleUnitNumber))
|
command.TaskScheduleId = taskSchedule.id;
|
||||||
{
|
|
||||||
return operation.Failed("لطفا تعداد بازه خود را مشخص کنید");
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (command.ScheduleUnitType)
|
switch (command.ScheduleUnitType)
|
||||||
{
|
{
|
||||||
case TaskScheduleUnitType.Year:
|
case "year":
|
||||||
if (Convert.ToInt32(command.ScheduleCount) != 1)
|
for (int i = 1; i <= count; i++)
|
||||||
{
|
{
|
||||||
return operation.Failed("دوره نمیتواند بیشتر از 1 سال باشد");
|
command.EndTaskDate = previousDateEdited.ToFarsi();
|
||||||
}
|
operation = _taskApplication.CreateTask(command);
|
||||||
break;
|
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
||||||
case TaskScheduleUnitType.Month:
|
|
||||||
|
|
||||||
if (Convert.ToInt32(command.ScheduleUnitNumber) is > 12 or < 1)
|
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
||||||
{
|
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
||||||
return operation.Failed("بازه وارد شده نا معتبر است");
|
{
|
||||||
}
|
previousDateEdited = previousDateRaw.AddDays(1);
|
||||||
|
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
||||||
|
|
||||||
if (Convert.ToInt32(command.ScheduleCount) is > 60 or < 1)
|
}
|
||||||
{
|
previousDateRaw = previousDateRaw.AddYears(unitNumber);
|
||||||
return operation.Failed("تعداد دفعات وارد شده نامعتبر است");
|
previousDateEdited = previousDateRaw;
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TaskScheduleUnitType.Week:
|
|
||||||
if (command.ScheduleUnitNumber != "first" && command.ScheduleUnitNumber != "last")
|
|
||||||
{
|
|
||||||
return operation.Failed("بازه وارد شده نا معتبر است");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TaskScheduleUnitType.Day:
|
|
||||||
if (Convert.ToInt32(command.ScheduleUnitNumber) is > 29 or < 1)
|
|
||||||
{
|
|
||||||
return operation.Failed("بازه وارد شده نا معتبر است");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return operation.Failed("نوع بازه مشخص نمیباشد");
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
try
|
break;
|
||||||
{
|
|
||||||
//using var transaction = new TransactionScope();
|
|
||||||
DateTime previousDateRaw = command.EndTaskDate.ToEndDayOfGeorgianDateTime();
|
|
||||||
DateTime previousDateEdited = command.EndTaskDate.ToEndDayOfGeorgianDateTime();
|
|
||||||
var day = Convert.ToInt32(command.EndTaskDate.Substring(8, 2));
|
|
||||||
var month = Convert.ToInt32(command.EndTaskDate.Substring(5, 2));
|
|
||||||
var year = Convert.ToInt32(command.EndTaskDate.Substring(0, 4));
|
|
||||||
|
|
||||||
int count = Convert.ToInt32(command.ScheduleCount);
|
case "month":
|
||||||
bool isInt = int.TryParse(command.ScheduleUnitNumber, out int unitNumber);
|
for (int i = 1; i <= count; i++)
|
||||||
string kindOfWeekUnit = isInt ? "" : command.ScheduleUnitNumber;
|
{
|
||||||
var taskSchedule = new TaskSchedule(command.ScheduleCount, command.ScheduleType, command.ScheduleUnitType,
|
command.EndTaskDate = previousDateEdited.ToFarsi();
|
||||||
command.ScheduleUnitNumber, previousDateEdited);
|
operation = _taskApplication.CreateTask(command);
|
||||||
_taskScheduleRepository.Create(taskSchedule);
|
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
||||||
_taskScheduleRepository.SaveChanges();
|
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
||||||
command.TaskScheduleId = taskSchedule.id;
|
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
||||||
|
{
|
||||||
|
previousDateEdited = previousDateRaw.AddDays(1);
|
||||||
|
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
||||||
|
|
||||||
switch (command.ScheduleUnitType)
|
}
|
||||||
{
|
previousDateRaw = previousDateRaw.AddMonths(unitNumber);
|
||||||
case TaskScheduleUnitType.Year:
|
previousDateEdited = previousDateRaw;
|
||||||
for (int i = 1; i <= count; i++)
|
|
||||||
{
|
|
||||||
command.EndTaskDate = previousDateEdited.ToFarsi();
|
|
||||||
operation = _taskApplication.CreateTask(command);
|
|
||||||
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
|
||||||
|
|
||||||
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
}
|
||||||
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
break;
|
||||||
{
|
|
||||||
previousDateEdited = previousDateRaw.AddDays(1);
|
|
||||||
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
|
||||||
}
|
|
||||||
previousDateRaw = previousDateRaw.AddYears(unitNumber);
|
|
||||||
previousDateEdited = previousDateRaw;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TaskScheduleUnitType.Month:
|
case "week":
|
||||||
bool endOfMonth = day == 31;
|
for (int i = 1; i <= count; i++)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(kindOfWeekUnit))
|
||||||
|
{
|
||||||
|
throw new InvalidDataException();
|
||||||
|
}
|
||||||
|
|
||||||
if (endOfMonth)
|
command.EndTaskDate = kindOfWeekUnit switch
|
||||||
{
|
{
|
||||||
for (int i = 1; i <= count; i++)
|
"first" => previousDateRaw.GetNextDayOfWeek(DayOfWeek.Saturday).ToFarsi(),
|
||||||
{
|
"last" => previousDateRaw.GetNextDayOfWeek(DayOfWeek.Thursday).ToFarsi(),
|
||||||
command.EndTaskDate = previousDateEdited.ToFarsi();
|
_ => throw new InvalidDataException()
|
||||||
operation = _taskApplication.CreateTask(command);
|
};
|
||||||
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
operation = _taskApplication.CreateTask(command);
|
||||||
if (month >= 12)
|
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
||||||
{
|
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
||||||
var extra = month - 12;
|
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
||||||
year++;
|
{
|
||||||
month = extra + unitNumber;
|
previousDateEdited = previousDateRaw.AddDays(1);
|
||||||
}
|
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
||||||
else
|
|
||||||
{
|
|
||||||
month = unitNumber + month;
|
|
||||||
}
|
|
||||||
previousDateRaw = $"{year:0000}/{month:00}/01".FindeEndOfMonth().ToGeorgianDateTime();
|
|
||||||
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
|
||||||
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
|
||||||
{
|
|
||||||
previousDateEdited = previousDateRaw.AddDays(1);
|
|
||||||
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
previousDateRaw = command.EndTaskDate.ToGeorgianDateTime();
|
||||||
|
previousDateEdited = previousDateRaw;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
previousDateEdited = previousDateRaw;
|
case "day":
|
||||||
|
|
||||||
}
|
for (int i = 1; i <= count; i++)
|
||||||
}
|
{
|
||||||
else
|
command.EndTaskDate = previousDateEdited.ToFarsi();
|
||||||
{
|
operation = _taskApplication.CreateTask(command);
|
||||||
for (int i = 1; i < count; i++)
|
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
||||||
{
|
previousDateRaw = previousDateRaw.AddDays(unitNumber);
|
||||||
command.EndTaskDate = previousDateEdited.ToFarsi();
|
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
||||||
operation = _taskApplication.CreateTask(command);
|
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
||||||
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
{
|
||||||
var endDay = 0;
|
previousDateEdited = previousDateRaw.AddDays(1);
|
||||||
|
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
||||||
|
|
||||||
if (month >= 12)
|
}
|
||||||
{
|
|
||||||
var extra = month - 12;
|
|
||||||
year++;
|
|
||||||
month = extra + unitNumber;
|
|
||||||
|
|
||||||
}
|
previousDateEdited = previousDateRaw;
|
||||||
else
|
}
|
||||||
{
|
break;
|
||||||
month = unitNumber + month;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (day == 30)
|
}
|
||||||
{
|
_taskScheduleRepository.SaveChanges();
|
||||||
if (month == 12)
|
operation = operation.Succcedded();
|
||||||
{
|
return operation;
|
||||||
var lastYearDay = Convert.ToInt32($"{year:0000}/{month:00}/1".FindeEndOfMonth()
|
}
|
||||||
.Substring(8, 2));
|
catch (Exception e)
|
||||||
endDay = lastYearDay == 30 ? lastYearDay : 29;
|
{
|
||||||
}
|
return operation.Failed(e.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
public OperationResult CreateUnlimitedTasks(CreateTask command)
|
||||||
|
{
|
||||||
|
var operation = _taskApplication.CreateTask(command);
|
||||||
|
if (!operation.IsSuccedded)
|
||||||
|
return operation;
|
||||||
|
var lastDate = command.EndTaskDate.ToGeorgianDateTime();
|
||||||
|
var taskSchedule = new TaskSchedule(command.ScheduleCount, command.ScheduleType, command.ScheduleUnitType,
|
||||||
|
command.ScheduleUnitNumber, lastDate);
|
||||||
|
_taskScheduleRepository.Create(taskSchedule);
|
||||||
|
_taskScheduleRepository.SaveChanges();
|
||||||
|
return operation.Succcedded();
|
||||||
|
|
||||||
previousDateEdited = endDay == 0
|
}
|
||||||
? $"{year:0000}/{month:00}/{day:00}".ToGeorgianDateTime()
|
|
||||||
: $"{year:0000}/{month:00}/{endDay:00}".ToGeorgianDateTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//for (int i = 1; i <= count; i++)
|
|
||||||
//{
|
|
||||||
// command.EndTaskDate = previousDateEdited.ToFarsi();
|
|
||||||
// operation = _taskApplication.CreateTask(command);
|
|
||||||
// taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
|
||||||
// previousDateRaw = $"{year:0000}/{month:00}/01".FindeEndOfMonth().ToGeorgianDateTime();
|
|
||||||
// bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
|
||||||
// while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
|
||||||
// {
|
|
||||||
// previousDateEdited = previousDateRaw.AddDays(1);
|
|
||||||
// isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
|
||||||
|
|
||||||
// }
|
|
||||||
// previousDateEdited = previousDateRaw;
|
|
||||||
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TaskScheduleUnitType.Week:
|
|
||||||
for (int i = 1; i <= count; i++)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrWhiteSpace(kindOfWeekUnit))
|
|
||||||
{
|
|
||||||
throw new InvalidDataException();
|
|
||||||
}
|
|
||||||
|
|
||||||
command.EndTaskDate = kindOfWeekUnit switch
|
|
||||||
{
|
|
||||||
"first" => previousDateRaw.GetNextDayOfWeek(DayOfWeek.Saturday).ToFarsi(),
|
|
||||||
"last" => previousDateRaw.GetNextDayOfWeek(DayOfWeek.Thursday).ToFarsi(),
|
|
||||||
_ => throw new InvalidDataException()
|
|
||||||
};
|
|
||||||
operation = _taskApplication.CreateTask(command);
|
|
||||||
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
|
||||||
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
|
||||||
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
|
||||||
{
|
|
||||||
previousDateEdited = previousDateRaw.AddDays(1);
|
|
||||||
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
|
||||||
|
|
||||||
}
|
|
||||||
previousDateRaw = command.EndTaskDate.ToGeorgianDateTime();
|
|
||||||
previousDateEdited = previousDateRaw;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TaskScheduleUnitType.Day:
|
|
||||||
|
|
||||||
for (int i = 1; i <= count; i++)
|
|
||||||
{
|
|
||||||
command.EndTaskDate = previousDateEdited.ToFarsi();
|
|
||||||
operation = _taskApplication.CreateTask(command);
|
|
||||||
taskSchedule.SetLastEndTaskDate(previousDateEdited);
|
|
||||||
previousDateRaw = previousDateRaw.AddDays(unitNumber);
|
|
||||||
bool isHoliday = _holidayItemRepository.GetHoliday(previousDateRaw);
|
|
||||||
while (isHoliday || previousDateEdited.DayOfWeek == DayOfWeek.Friday)
|
|
||||||
{
|
|
||||||
previousDateEdited = previousDateRaw.AddDays(1);
|
|
||||||
isHoliday = _holidayItemRepository.GetHoliday(previousDateEdited);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
previousDateEdited = previousDateRaw;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
_taskScheduleRepository.SaveChanges();
|
|
||||||
//transaction.Complete();
|
|
||||||
operation = operation.Succcedded();
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
return operation.Failed(e.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private OperationResult CreateUnlimitedTasks(CreateTask command)
|
|
||||||
{
|
|
||||||
using var transaction = new TransactionScope();
|
|
||||||
|
|
||||||
var lastDate = command.EndTaskDate.ToGeorgianDateTime();
|
|
||||||
|
|
||||||
var taskSchedule = new TaskSchedule(command.ScheduleCount, command.ScheduleType, command.ScheduleUnitType,
|
|
||||||
command.ScheduleUnitNumber, lastDate);
|
|
||||||
|
|
||||||
_taskScheduleRepository.Create(taskSchedule);
|
|
||||||
_taskScheduleRepository.SaveChanges();
|
|
||||||
|
|
||||||
command.TaskScheduleId = taskSchedule.id;
|
|
||||||
|
|
||||||
var operation = _taskApplication.CreateTask(command);
|
|
||||||
if (!operation.IsSuccedded)
|
|
||||||
return operation;
|
|
||||||
|
|
||||||
|
|
||||||
_taskScheduleRepository.SaveChanges();
|
|
||||||
transaction.Complete();
|
|
||||||
return operation.Succcedded();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using AccountManagement.Application.Contracts.TaskSubject;
|
using AccountManagement.Application.Contracts.TaskSubject;
|
||||||
using AccountManagement.Domain.TaskSubjectAgg;
|
using AccountManagement.Domain.TaskSubjectAgg;
|
||||||
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
|
|
||||||
|
|
||||||
namespace AccountManagement.Application;
|
namespace AccountManagement.Application;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ using AccountManagement.Application.Contracts.Role;
|
|||||||
using AccountManagement.Application.Contracts.SubAccount;
|
using AccountManagement.Application.Contracts.SubAccount;
|
||||||
using AccountManagement.Application.Contracts.SubAccountPermissionSubtitle;
|
using AccountManagement.Application.Contracts.SubAccountPermissionSubtitle;
|
||||||
using AccountManagement.Application.Contracts.Task;
|
using AccountManagement.Application.Contracts.Task;
|
||||||
using AccountManagement.Application.Contracts.TaskSchedule;
|
|
||||||
using AccountManagement.Application.Contracts.TaskSubject;
|
using AccountManagement.Application.Contracts.TaskSubject;
|
||||||
using AccountManagement.Application.Contracts.Ticket;
|
using AccountManagement.Application.Contracts.Ticket;
|
||||||
using AccountManagement.Application.Contracts.TicketAccessAccount;
|
using AccountManagement.Application.Contracts.TicketAccessAccount;
|
||||||
@@ -26,7 +25,6 @@ using AccountManagement.Domain.SubAccountPermissionSubtitle4Agg;
|
|||||||
using AccountManagement.Domain.SubAccountRoleAgg;
|
using AccountManagement.Domain.SubAccountRoleAgg;
|
||||||
using AccountManagement.Domain.TaskAgg;
|
using AccountManagement.Domain.TaskAgg;
|
||||||
using AccountManagement.Domain.TaskMessageAgg;
|
using AccountManagement.Domain.TaskMessageAgg;
|
||||||
using AccountManagement.Domain.TaskScheduleAgg;
|
|
||||||
using AccountManagement.Domain.TaskSubjectAgg;
|
using AccountManagement.Domain.TaskSubjectAgg;
|
||||||
using AccountManagement.Domain.TicketAccessAccountAgg;
|
using AccountManagement.Domain.TicketAccessAccountAgg;
|
||||||
using AccountManagement.Domain.TicketAgg;
|
using AccountManagement.Domain.TicketAgg;
|
||||||
@@ -64,8 +62,6 @@ namespace AccountManagement.Configuration
|
|||||||
services.AddScoped<ITaskRepository, TaskRepository>();
|
services.AddScoped<ITaskRepository, TaskRepository>();
|
||||||
services.AddTransient<ITaskApplication, TaskApplication>();
|
services.AddTransient<ITaskApplication, TaskApplication>();
|
||||||
|
|
||||||
services.AddTransient<ITaskScheduleApplication, TaskScheduleApplication>();
|
|
||||||
services.AddTransient<ITaskScheduleRepository, TaskScheduleRepository>();
|
|
||||||
|
|
||||||
services.AddTransient<ITaskSubjectRepository, TaskSubjectRepository>();
|
services.AddTransient<ITaskSubjectRepository, TaskSubjectRepository>();
|
||||||
services.AddTransient<ITaskSubjectApplication, TaskSubjectApplication>();
|
services.AddTransient<ITaskSubjectApplication, TaskSubjectApplication>();
|
||||||
|
|||||||
@@ -33,13 +33,6 @@ namespace AccountManagement.Domain.AccountAgg
|
|||||||
|
|
||||||
List<AccountViewModel> GetAccountsToEditWorkshop(long workshopId);
|
List<AccountViewModel> GetAccountsToEditWorkshop(long workshopId);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// چک میکند که اکانتی با این ام کاربری وجود دارد یا نه
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="userName"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public bool CheckExistClientAccount(string userName);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace AccountManagement.Domain.AssignAgg;
|
|||||||
|
|
||||||
public class Assign : EntityBase
|
public class Assign : EntityBase
|
||||||
{
|
{
|
||||||
public Assign(long taskId, long assignerId, long assignedId, int assignerPositionValue, string assignedName, int assignedPositionValue, DateTime endTaskDate, bool firstTimeCreation=false)
|
public Assign(long taskId, long assignerId, long assignedId, int assignerPositionValue, string assignedName, int assignedPositionValue, DateTime endTaskDate, bool firstTimeCreation = false)
|
||||||
{
|
{
|
||||||
TaskId = taskId;
|
TaskId = taskId;
|
||||||
AssignerId = assignerId;
|
AssignerId = assignerId;
|
||||||
@@ -18,7 +18,7 @@ public class Assign : EntityBase
|
|||||||
AssignedPositionValue = assignedPositionValue;
|
AssignedPositionValue = assignedPositionValue;
|
||||||
EndTaskDate = endTaskDate;
|
EndTaskDate = endTaskDate;
|
||||||
FirstTimeCreation = firstTimeCreation;
|
FirstTimeCreation = firstTimeCreation;
|
||||||
}
|
}
|
||||||
|
|
||||||
//آیدی شخص ارسال کننده
|
//آیدی شخص ارسال کننده
|
||||||
public long TaskId { get; private set; }
|
public long TaskId { get; private set; }
|
||||||
@@ -52,9 +52,7 @@ public class Assign : EntityBase
|
|||||||
|
|
||||||
public string? DoneDescription { get; private set; }
|
public string? DoneDescription { get; private set; }
|
||||||
public bool IsCanceledRequest { get; private set; }
|
public bool IsCanceledRequest { get; private set; }
|
||||||
|
|
||||||
public bool FirstTimeCreation { get; private set; }
|
public bool FirstTimeCreation { get; private set; }
|
||||||
|
|
||||||
public Tasks Task { get; set; }
|
public Tasks Task { get; set; }
|
||||||
public List<TaskMessage> TaskMessageList { get; set; }
|
public List<TaskMessage> TaskMessageList { get; set; }
|
||||||
|
|
||||||
@@ -73,9 +71,9 @@ public class Assign : EntityBase
|
|||||||
{
|
{
|
||||||
TimeRequest = false;
|
TimeRequest = false;
|
||||||
AcceptedTimeRequest++;
|
AcceptedTimeRequest++;
|
||||||
EndTaskDate = RequestDate < DateTime.Today ? DateTime.Today : RequestDate.Value;
|
EndTaskDate = RequestDate.Value;
|
||||||
|
|
||||||
}
|
}
|
||||||
public void RejectTimeRequest()
|
public void RejectTimeRequest()
|
||||||
{
|
{
|
||||||
TimeRequest = false;
|
TimeRequest = false;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using AccountManagement.Application.Contracts.Task;
|
using AccountManagement.Application.Contracts.Task;
|
||||||
@@ -89,22 +88,11 @@ public interface ITaskRepository:IRepository<long,Tasks>
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
List<TaskViewModel> GetTasksHaveTicket(TaskSearchModel searchModel);
|
List<TaskViewModel> GetTasksHaveTicket(TaskSearchModel searchModel);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// لیست تسک های دوره ای ایجاد شده توسط کاربر
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="searchModel"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
List<TaskViewModel> GetTaskScheduleList(TaskSearchModel searchModel);
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد تسک های درخواستی. بدون تیکت
|
/// تعداد تسک های درخواستی. بدون تیکت
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> GetRequestedTasksCount();
|
int GetRequestedTasksCount();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// گرفتن جزئیات درخواست وظیفه
|
/// گرفتن جزئیات درخواست وظیفه
|
||||||
@@ -126,38 +114,39 @@ public interface ITaskRepository:IRepository<long,Tasks>
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
bool HasOverdueTasks(long userId);
|
bool HasOverdueTasks(long userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مجوع تعداد تسک های عقب افتاده و درخواستی
|
///مجوع تعداد تسک های عقب افتاده و درخواستی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> RequestedAndOverdueTasksCount(long userId);
|
int RequestedAndOverdueTasksCount(long userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد تسک های دارای تیکت
|
/// تعداد تسک های دارای تیکت
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> TasksHaveTicketCounts(long userId);
|
int TasksHaveTicketCounts(long userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد درخواست های تسک های دارا تیکت
|
/// تعداد درخواست های تسک های دارا تیکت
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> TasksHaveTicketRequestsCount(long userId);
|
int TasksHaveTicketRequestsCount(long userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد تسک های شخصی و دریافتی برای امروز و یا عقب افتاده
|
///تعداد تسک های شخصی و دریافتی برای امروز و یا عقب افتاده
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="userId"></param>
|
/// <param name="userId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<int> OverdueTasksCount(long userId);
|
int OverdueTasksCount(long userId);
|
||||||
|
|
||||||
|
|
||||||
// گرفتن پیام های مربوط به هر تسک
|
// گرفتن پیام های مربوط به هر تسک
|
||||||
|
|
||||||
List<Tasks> GetTasksByTaskScheduleId(long taskScheduleId);
|
|
||||||
|
|
||||||
void RemoveRange(IEnumerable<Tasks> tasks);
|
|
||||||
|
//OperationResult MoveDataFRomTaskToAssign();
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,8 @@
|
|||||||
using System.Threading.Tasks;
|
using _0_Framework.Domain;
|
||||||
using _0_Framework.Domain;
|
|
||||||
using AccountManagement.Application.Contracts.TaskSchedule;
|
|
||||||
|
|
||||||
namespace AccountManagement.Domain.TaskScheduleAgg;
|
namespace AccountManagement.Domain.TaskScheduleAgg;
|
||||||
|
|
||||||
public interface ITaskScheduleRepository : IRepository<long, TaskSchedule>
|
public interface ITaskScheduleRepository:IRepository<long,TaskSchedule>
|
||||||
{
|
{
|
||||||
Task<TaskScheduleDetailsViewModel> GetDetails(long id);
|
|
||||||
void Remove(TaskSchedule entity);
|
|
||||||
}
|
}
|
||||||
@@ -1,38 +1,29 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using AccountManagement.Application.Contracts.Task;
|
|
||||||
using AccountManagement.Domain.TaskAgg;
|
using AccountManagement.Domain.TaskAgg;
|
||||||
|
|
||||||
namespace AccountManagement.Domain.TaskScheduleAgg;
|
namespace AccountManagement.Domain.TaskScheduleAgg;
|
||||||
|
|
||||||
public class TaskSchedule:EntityBase
|
public class TaskSchedule:EntityBase
|
||||||
{
|
{
|
||||||
public TaskSchedule(string count, TaskScheduleType type, TaskScheduleUnitType unitType, string unitNumber, DateTime lastEndTaskDate)
|
public TaskSchedule(string count, string type, string unitType, string unitNumber, DateTime lastEndTaskDate)
|
||||||
{
|
{
|
||||||
Count = count;
|
Count = count;
|
||||||
Type = type;
|
Type = type;
|
||||||
UnitType = unitType;
|
UnitType = unitType;
|
||||||
UnitNumber = unitNumber;
|
UnitNumber = unitNumber;
|
||||||
LastEndTaskDate = lastEndTaskDate;
|
LastEndTaskDate = lastEndTaskDate;
|
||||||
IsActive = IsActive.False;
|
|
||||||
}
|
}
|
||||||
public string Count { get; private set; }
|
public string Count { get; private set; }
|
||||||
public TaskScheduleType Type { get; private set; }
|
public string Type { get; private set; }
|
||||||
public TaskScheduleUnitType UnitType { get; private set; }
|
public string UnitType { get; private set; }
|
||||||
public string UnitNumber { get; private set; }
|
public string UnitNumber { get; private set; }
|
||||||
public DateTime LastEndTaskDate { get; private set; }
|
public DateTime LastEndTaskDate { get; private set; }
|
||||||
public IsActive IsActive { get; private set; }
|
|
||||||
public List<Tasks> TasksList { get; set; }
|
public List<Tasks> TasksList { get; set; }
|
||||||
|
|
||||||
public void SetLastEndTaskDate(DateTime lastEndTaskDate)
|
public void SetLastEndTaskDate(DateTime lastEndTaskDate)
|
||||||
{
|
{
|
||||||
LastEndTaskDate = lastEndTaskDate;
|
LastEndTaskDate = lastEndTaskDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeActive()
|
|
||||||
{
|
|
||||||
IsActive = IsActive.False;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -27,7 +27,6 @@ using AccountManagement.Domain.SubAccountPermissionSubtitle3Agg;
|
|||||||
using AccountManagement.Domain.SubAccountPermissionSubtitle4Agg;
|
using AccountManagement.Domain.SubAccountPermissionSubtitle4Agg;
|
||||||
using AccountManagement.Domain.SubAccountRoleAgg;
|
using AccountManagement.Domain.SubAccountRoleAgg;
|
||||||
using AccountMangement.Infrastructure.EFCore.Seed;
|
using AccountMangement.Infrastructure.EFCore.Seed;
|
||||||
using AccountManagement.Domain.TaskScheduleAgg;
|
|
||||||
|
|
||||||
namespace AccountMangement.Infrastructure.EFCore
|
namespace AccountMangement.Infrastructure.EFCore
|
||||||
{
|
{
|
||||||
@@ -58,9 +57,6 @@ namespace AccountMangement.Infrastructure.EFCore
|
|||||||
|
|
||||||
public DbSet<TicketAccessAccount> TicketAccessAccounts { get; set; }
|
public DbSet<TicketAccessAccount> TicketAccessAccounts { get; set; }
|
||||||
|
|
||||||
public DbSet<TaskSchedule> TaskSchedules { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
|
|||||||
@@ -12,10 +12,9 @@ public class TaskScheduleMapping : IEntityTypeConfiguration<TaskSchedule>
|
|||||||
builder.HasKey(x => x.id);
|
builder.HasKey(x => x.id);
|
||||||
|
|
||||||
builder.Property(x => x.Count).HasMaxLength(10);
|
builder.Property(x => x.Count).HasMaxLength(10);
|
||||||
builder.Property(x => x.Type).HasConversion<string>().HasMaxLength(12);
|
builder.Property(x => x.Type).HasMaxLength(12);
|
||||||
builder.Property(x => x.UnitNumber).HasMaxLength(10);
|
builder.Property(x => x.UnitNumber).HasMaxLength(10);
|
||||||
builder.Property(x => x.UnitType).HasConversion<string>().HasMaxLength(10);
|
builder.Property(x => x.UnitType).HasMaxLength(10);
|
||||||
builder.Property(x => x.IsActive).HasConversion<string>().HasMaxLength(5);
|
|
||||||
|
|
||||||
builder.HasMany(x => x.TasksList).WithOne(x => x.TaskSchedule)
|
builder.HasMany(x => x.TasksList).WithOne(x => x.TaskSchedule)
|
||||||
.HasForeignKey(x => x.TaskScheduleId);
|
.HasForeignKey(x => x.TaskScheduleId);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,74 +0,0 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace AccountMangement.Infrastructure.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class addTaskSchedule : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.AlterColumn<string>(
|
|
||||||
name: "UnitType",
|
|
||||||
table: "TaskSchedules",
|
|
||||||
type: "nvarchar(10)",
|
|
||||||
maxLength: 10,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "",
|
|
||||||
oldClrType: typeof(string),
|
|
||||||
oldType: "nvarchar(10)",
|
|
||||||
oldMaxLength: 10,
|
|
||||||
oldNullable: true);
|
|
||||||
|
|
||||||
migrationBuilder.AlterColumn<string>(
|
|
||||||
name: "Type",
|
|
||||||
table: "TaskSchedules",
|
|
||||||
type: "nvarchar(12)",
|
|
||||||
maxLength: 12,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "",
|
|
||||||
oldClrType: typeof(string),
|
|
||||||
oldType: "nvarchar(12)",
|
|
||||||
oldMaxLength: 12,
|
|
||||||
oldNullable: true);
|
|
||||||
|
|
||||||
migrationBuilder.AddColumn<string>(
|
|
||||||
name: "IsCanceled",
|
|
||||||
table: "TaskSchedules",
|
|
||||||
type: "nvarchar(5)",
|
|
||||||
maxLength: 5,
|
|
||||||
nullable: false,
|
|
||||||
defaultValue: "");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.DropColumn(
|
|
||||||
name: "IsCanceled",
|
|
||||||
table: "TaskSchedules");
|
|
||||||
|
|
||||||
migrationBuilder.AlterColumn<string>(
|
|
||||||
name: "UnitType",
|
|
||||||
table: "TaskSchedules",
|
|
||||||
type: "nvarchar(10)",
|
|
||||||
maxLength: 10,
|
|
||||||
nullable: true,
|
|
||||||
oldClrType: typeof(string),
|
|
||||||
oldType: "nvarchar(10)",
|
|
||||||
oldMaxLength: 10);
|
|
||||||
|
|
||||||
migrationBuilder.AlterColumn<string>(
|
|
||||||
name: "Type",
|
|
||||||
table: "TaskSchedules",
|
|
||||||
type: "nvarchar(12)",
|
|
||||||
maxLength: 12,
|
|
||||||
nullable: true,
|
|
||||||
oldClrType: typeof(string),
|
|
||||||
oldType: "nvarchar(12)",
|
|
||||||
oldMaxLength: 12);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,28 +0,0 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Migrations;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace AccountMangement.Infrastructure.EFCore.Migrations
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
public partial class taskSchedulerenameisActive : Migration
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.RenameColumn(
|
|
||||||
name: "IsCanceled",
|
|
||||||
table: "TaskSchedules",
|
|
||||||
newName: "IsActive");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
|
||||||
{
|
|
||||||
migrationBuilder.RenameColumn(
|
|
||||||
name: "IsActive",
|
|
||||||
table: "TaskSchedules",
|
|
||||||
newName: "IsCanceled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -759,16 +759,10 @@ namespace AccountMangement.Infrastructure.EFCore.Migrations
|
|||||||
b.Property<DateTime>("CreationDate")
|
b.Property<DateTime>("CreationDate")
|
||||||
.HasColumnType("datetime2");
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
b.Property<string>("IsActive")
|
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(5)
|
|
||||||
.HasColumnType("nvarchar(5)");
|
|
||||||
|
|
||||||
b.Property<DateTime>("LastEndTaskDate")
|
b.Property<DateTime>("LastEndTaskDate")
|
||||||
.HasColumnType("datetime2");
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
b.Property<string>("Type")
|
b.Property<string>("Type")
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(12)
|
.HasMaxLength(12)
|
||||||
.HasColumnType("nvarchar(12)");
|
.HasColumnType("nvarchar(12)");
|
||||||
|
|
||||||
@@ -777,7 +771,6 @@ namespace AccountMangement.Infrastructure.EFCore.Migrations
|
|||||||
.HasColumnType("nvarchar(10)");
|
.HasColumnType("nvarchar(10)");
|
||||||
|
|
||||||
b.Property<string>("UnitType")
|
b.Property<string>("UnitType")
|
||||||
.IsRequired()
|
|
||||||
.HasMaxLength(10)
|
.HasMaxLength(10)
|
||||||
.HasColumnType("nvarchar(10)");
|
.HasColumnType("nvarchar(10)");
|
||||||
|
|
||||||
|
|||||||
@@ -332,9 +332,4 @@ public class AccountRepository : RepositoryBase<long, Account>, IAccountReposito
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public bool CheckExistClientAccount(string userName)
|
|
||||||
{
|
|
||||||
return _context.Accounts.Any(x => x.Username == userName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,6 @@ using _0_Framework.InfraStructure;
|
|||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using AccountManagement.Application.Contracts.Account;
|
using AccountManagement.Application.Contracts.Account;
|
||||||
using AccountManagement.Application.Contracts.Assign;
|
using AccountManagement.Application.Contracts.Assign;
|
||||||
@@ -47,6 +46,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
|
|
||||||
public EditTask GetDetails(long TaskId)
|
public EditTask GetDetails(long TaskId)
|
||||||
{
|
{
|
||||||
|
var task = Get(TaskId);
|
||||||
|
|
||||||
var userId = _authHelper.CurrentAccountId();
|
var userId = _authHelper.CurrentAccountId();
|
||||||
|
|
||||||
@@ -94,8 +94,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
Fullname = a.Fullname,
|
Fullname = a.Fullname,
|
||||||
Id = a.id,
|
Id = a.id,
|
||||||
|
|
||||||
}).FirstOrDefault(),
|
}).FirstOrDefault()
|
||||||
TaskScheduleId = x.TaskScheduleId ?? 0
|
|
||||||
|
|
||||||
}).FirstOrDefault();
|
}).FirstOrDefault();
|
||||||
|
|
||||||
@@ -113,17 +112,6 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
res.IsCancel = res.AssignViewModels.First(x => x.AssignedId == userId).IsCancel;
|
res.IsCancel = res.AssignViewModels.First(x => x.AssignedId == userId).IsCancel;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res.TaskScheduleId>0)
|
|
||||||
{
|
|
||||||
var taskSchedule = _accountContext.TaskSchedules.FirstOrDefault(x => x.id == res.TaskScheduleId);
|
|
||||||
|
|
||||||
res.ScheduleUnitType = taskSchedule.UnitType;
|
|
||||||
res.ScheduleType = taskSchedule.Type;
|
|
||||||
res.ScheduleCount = taskSchedule.Count;
|
|
||||||
res.ScheduleUnitNumber = taskSchedule.UnitNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//_accountContext.Tasks.Where(x => x.id == TaskId).Select(x => new EditTask()
|
//_accountContext.Tasks.Where(x => x.id == TaskId).Select(x => new EditTask()
|
||||||
//{
|
//{
|
||||||
// EndTaskDate = x.EndTaskDate.ToFarsi(),
|
// EndTaskDate = x.EndTaskDate.ToFarsi(),
|
||||||
@@ -980,7 +968,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
.ThenInclude(x => x.Media)
|
.ThenInclude(x => x.Media)
|
||||||
.Where(x =>
|
.Where(x =>
|
||||||
x.Task.IsActiveString == "true" && (x.AssignerId == accountId && x.AssignedId != accountId) && (!x.IsCanceledRequest && !x.TimeRequest && !x.IsDoneRequest) && x.Task.TicketId == null &&
|
x.Task.IsActiveString == "true" && (x.AssignerId == accountId && x.AssignedId != accountId) && (!x.IsCanceledRequest && !x.TimeRequest && !x.IsDoneRequest) && x.Task.TicketId == null &&
|
||||||
x.Task.SenderId == accountId && x.Task.TaskScheduleId == null)
|
x.Task.SenderId == accountId)
|
||||||
.Select(x =>
|
.Select(x =>
|
||||||
new TaskViewModel()
|
new TaskViewModel()
|
||||||
{
|
{
|
||||||
@@ -1851,307 +1839,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TaskViewModel> GetTaskScheduleList(TaskSearchModel searchModel)
|
|
||||||
{
|
|
||||||
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
|
||||||
var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
|
||||||
var emptyAcc = new AccountViewModel()
|
|
||||||
{
|
|
||||||
Fullname = "-",
|
|
||||||
PositionValue = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
var raw = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias)
|
|
||||||
.ThenInclude(x => x.Media)
|
|
||||||
.Include(x => x.Task).ThenInclude(x => x.TaskSchedule)
|
|
||||||
.Where(x =>
|
|
||||||
x.Task.IsActiveString == "true" && x.Task.SenderId == accountId
|
|
||||||
&& x.Task.TaskScheduleId != null && x.Task.TaskScheduleId > 0 && (!x.IsCanceledRequest && !x.TimeRequest && !x.IsDoneRequest) && x.Task.TaskSchedule.IsActive == IsActive.True);
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
|
||||||
{
|
|
||||||
raw = raw.Where(x =>
|
|
||||||
(x.Task.Description != null && x.Task.Description.Contains(searchModel.GeneralSearch))
|
|
||||||
|| x.Task.ContractingPartyName.Contains(searchModel.GeneralSearch)
|
|
||||||
|| x.Task.Title.Contains(searchModel.GeneralSearch));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var query = raw.GroupBy(x => x.Task.TaskScheduleId).Select(x =>
|
|
||||||
new TaskViewModel()
|
|
||||||
{
|
|
||||||
AssignedId = x.First().AssignedId,
|
|
||||||
AssignerId = x.First().AssignerId,
|
|
||||||
CreateDate = x.First().Task.CreationDate.ToFarsi(),
|
|
||||||
EndTaskDateFA = x.First().EndTaskDate.ToFarsi(),
|
|
||||||
IsDone = x.First().IsDone,
|
|
||||||
EndTaskDateGE = x.First().EndTaskDate,
|
|
||||||
Name = x.First().Task.Title,
|
|
||||||
RequestCancel = x.First().IsCanceledRequest,
|
|
||||||
RequestTime = x.First().TimeRequest,
|
|
||||||
Id = x.First().Task.id,
|
|
||||||
CreateTaskDateGE = x.First().Task.CreationDate,
|
|
||||||
IsCancel = x.First().IsCancel,
|
|
||||||
AcceptedTimeRequest = x.First().AcceptedTimeRequest,
|
|
||||||
IsCancelRequest = x.First().IsCanceledRequest,
|
|
||||||
ContractingPartyName = x.First().Task.ContractingPartyName,
|
|
||||||
MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.First().Task.id),
|
|
||||||
Description = x.First().Task.Description,
|
|
||||||
IsDoneRequest = x.First().IsDoneRequest,
|
|
||||||
ScheduleType = x.First().Task.TaskSchedule.Type,
|
|
||||||
ScheduleUnitType = x.First().Task.TaskSchedule.UnitType,
|
|
||||||
TaskScheduleId = (long)x.First().Task.TaskScheduleId
|
|
||||||
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
|
||||||
{
|
|
||||||
query = query.Where(x =>
|
|
||||||
(x.Description != null && x.Description.Contains(searchModel.GeneralSearch))
|
|
||||||
|| x.ContractingPartyName.Contains(searchModel.GeneralSearch)
|
|
||||||
|| x.Name.Contains(searchModel.GeneralSearch));
|
|
||||||
}
|
|
||||||
|
|
||||||
var res = query.Select(x => new TaskViewModel()
|
|
||||||
{
|
|
||||||
Sender = _accountContext.Accounts.Include(a => a.Position).Select(a => new AccountViewModel()
|
|
||||||
{
|
|
||||||
PositionValue = a.Position.PositionValue,
|
|
||||||
Id = a.id,
|
|
||||||
Fullname = a.Fullname,
|
|
||||||
}).FirstOrDefault(a => a.Id == x.AssignerId),
|
|
||||||
|
|
||||||
SelfName = _accountContext.Accounts.FirstOrDefault(a => a.id == accountId).Fullname,
|
|
||||||
|
|
||||||
Assigned = _accountContext.Assigns.Where(a => a.TaskId == x.Id)
|
|
||||||
.Where(a => a.AssignedPositionValue >= positionValue).Select(a => a.AssignedId)
|
|
||||||
.ToList(),
|
|
||||||
CreateDate = x.CreateDate,
|
|
||||||
EndTaskDateFA = x.EndTaskDateFA,
|
|
||||||
IsDone = x.IsDone,
|
|
||||||
EndTaskDateGE = x.EndTaskDateGE,
|
|
||||||
Name = x.Name,
|
|
||||||
RequestCancel = x.RequestCancel,
|
|
||||||
RequestTime = x.RequestTime,
|
|
||||||
Id = x.Id,
|
|
||||||
CreateTaskDateGE = x.CreateTaskDateGE,
|
|
||||||
IsCancel = x.IsCancel,
|
|
||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
|
||||||
MediaCount = x.MediaCount,
|
|
||||||
Description = x.Description,
|
|
||||||
IsDoneRequest = x.IsDoneRequest,
|
|
||||||
ScheduleType = x.ScheduleType,
|
|
||||||
ScheduleUnitType = x.ScheduleUnitType,
|
|
||||||
TaskScheduleId = x.TaskScheduleId
|
|
||||||
});
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.StartDate) && !string.IsNullOrWhiteSpace(searchModel.EndDate))
|
|
||||||
{
|
|
||||||
var start = searchModel.StartDate.ToGeorgianDateTime();
|
|
||||||
var end = searchModel.EndDate.ToGeorgianDateTime();
|
|
||||||
res = res.Where(x =>
|
|
||||||
((start > x.CreateTaskDateGE && x.CreateTaskDateGE < end) &&
|
|
||||||
|
|
||||||
(end > x.EndTaskDateGE && x.EndTaskDateGE > start))
|
|
||||||
|| ((start < x.CreateTaskDateGE && x.CreateTaskDateGE < end) &&
|
|
||||||
|
|
||||||
(end < x.EndTaskDateGE && x.EndTaskDateGE > start))
|
|
||||||
|| ((start < x.CreateTaskDateGE && x.CreateTaskDateGE < end) &&
|
|
||||||
|
|
||||||
(end > x.EndTaskDateGE && x.EndTaskDateGE > start))
|
|
||||||
|| ((start > x.CreateTaskDateGE && x.CreateTaskDateGE < end) &&
|
|
||||||
|
|
||||||
(end < x.EndTaskDateGE && x.EndTaskDateGE > end)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.IsDoneRequest))
|
|
||||||
{
|
|
||||||
bool isDoneReq = bool.Parse(searchModel.IsDoneRequest);
|
|
||||||
res = res.Where(x => x.IsDoneRequest == isDoneReq);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.IsDone))
|
|
||||||
{
|
|
||||||
bool isDone = bool.Parse(searchModel.IsDone);
|
|
||||||
res = res.Where(x => x.IsDone == isDone);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.IsCanceled))
|
|
||||||
{
|
|
||||||
bool isCancel = bool.Parse(searchModel.IsCanceled);
|
|
||||||
res = res.Where(x => x.IsCancel == isCancel);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.IsTimeRequest))
|
|
||||||
{
|
|
||||||
bool isTimeRequest = bool.Parse(searchModel.IsTimeRequest);
|
|
||||||
res = res.Where(x => x.RequestTime == isTimeRequest);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.TimeRequestAccepted))
|
|
||||||
{
|
|
||||||
res = res.Where(x => x.AcceptedTimeRequest > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.IsCancelRequest))
|
|
||||||
{
|
|
||||||
bool isCancelReq = bool.Parse(searchModel.IsCancelRequest);
|
|
||||||
res = res.Where(x => x.IsCancelRequest == isCancelReq);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var result = res.AsEnumerable();
|
|
||||||
|
|
||||||
|
|
||||||
if (searchModel.AccountId > 0)
|
|
||||||
{
|
|
||||||
result = result.Where(x =>
|
|
||||||
x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var orderResult = result.OrderByDescending(x => x.IsCancel ? 0 : 1).ThenBy(x => x.IsDone ? 1 : 0)
|
|
||||||
.ThenBy(x => x.EndTaskDateGE);
|
|
||||||
|
|
||||||
|
|
||||||
var final = orderResult.Skip(searchModel.PageIndex).Take(30).ToList();
|
|
||||||
|
|
||||||
final = final.Select(x => new TaskViewModel()
|
|
||||||
{
|
|
||||||
AssignViewModels = _accountContext.Accounts.Include(x => x.Position)
|
|
||||||
.Where(a => x.Assigned.Contains(a.id) && accountId != a.id)
|
|
||||||
.Select(a => new AssignViewModel()
|
|
||||||
{
|
|
||||||
AssignedName = a.Fullname,
|
|
||||||
AssignedPositionValue = a.Position.PositionValue
|
|
||||||
}).ToList(),
|
|
||||||
Sender = x.Sender,
|
|
||||||
SelfAssigner = x.Sender.Id == accountId ? true : false,
|
|
||||||
Assigned = x.Assigned,
|
|
||||||
SelfAssigned = x.Assigned.Any(a => a == accountId) ? true : false,
|
|
||||||
CreateDate = x.CreateDate,
|
|
||||||
EndTaskDateFA = x.EndTaskDateFA,
|
|
||||||
IsDone = x.IsDone,
|
|
||||||
EndTaskDateGE = x.EndTaskDateGE,
|
|
||||||
Name = x.Name,
|
|
||||||
RequestCancel = x.RequestCancel,
|
|
||||||
RequestTime = x.RequestTime,
|
|
||||||
Id = x.Id,
|
|
||||||
CreateTaskDateGE = x.CreateTaskDateGE,
|
|
||||||
IsCancel = x.IsCancel,
|
|
||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
|
||||||
MediaCount = x.MediaCount,
|
|
||||||
SelfName = x.SelfName,
|
|
||||||
Description = x.Description,
|
|
||||||
IsDoneRequest = x.IsDoneRequest,
|
|
||||||
ScheduleType = x.ScheduleType,
|
|
||||||
ScheduleUnitType = x.ScheduleUnitType,
|
|
||||||
TaskScheduleId = x.TaskScheduleId
|
|
||||||
|
|
||||||
|
|
||||||
}).ToList();
|
|
||||||
|
|
||||||
|
|
||||||
final = final.Select(x => new TaskViewModel()
|
|
||||||
{
|
|
||||||
|
|
||||||
AssignList = x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList()
|
|
||||||
{
|
|
||||||
AssignViewModels = a.ToList(),
|
|
||||||
PosValue = a.Key
|
|
||||||
}).ToList(),
|
|
||||||
Sender = x.Sender,
|
|
||||||
Assigned = x.Assigned,
|
|
||||||
CreateDate = x.CreateDate,
|
|
||||||
EndTaskDateFA = x.EndTaskDateFA,
|
|
||||||
IsDone = x.IsDone,
|
|
||||||
EndTaskDateGE = x.EndTaskDateGE,
|
|
||||||
Name = x.Name,
|
|
||||||
RequestCancel = x.RequestCancel,
|
|
||||||
RequestTime = x.RequestTime,
|
|
||||||
Id = x.Id,
|
|
||||||
CreateTaskDateGE = x.CreateTaskDateGE,
|
|
||||||
IsCancel = x.IsCancel,
|
|
||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
|
||||||
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel),
|
|
||||||
MediaCount = x.MediaCount,
|
|
||||||
HasAttachment = x.MediaCount > 0,
|
|
||||||
SelfName = x.SelfName,
|
|
||||||
SelfAssigned = x.SelfAssigned,
|
|
||||||
SelfAssigner = x.SelfAssigner,
|
|
||||||
Description = x.Description,
|
|
||||||
IsDoneRequest = x.IsDoneRequest,
|
|
||||||
AssignViewModels = x.AssignViewModels,
|
|
||||||
ScheduleType = x.ScheduleType,
|
|
||||||
ScheduleUnitType = x.ScheduleUnitType,
|
|
||||||
TaskScheduleId = x.TaskScheduleId
|
|
||||||
|
|
||||||
}).ToList();
|
|
||||||
|
|
||||||
final = final.Select(x => new TaskViewModel()
|
|
||||||
{
|
|
||||||
|
|
||||||
AssignList = !(x.SelfAssigned || x.SelfAssigner)
|
|
||||||
? AddAssign(x.AssignList, x.Sender)
|
|
||||||
: x.AssignList,
|
|
||||||
Sender = !(x.SelfAssigned || x.SelfAssigner)
|
|
||||||
? new AccountViewModel()
|
|
||||||
{
|
|
||||||
PositionValue = 0,
|
|
||||||
Fullname = "-"
|
|
||||||
}
|
|
||||||
: x.Sender,
|
|
||||||
Assigned = x.Assigned,
|
|
||||||
CreateDate = x.CreateDate,
|
|
||||||
EndTaskDateFA = x.EndTaskDateFA,
|
|
||||||
IsDone = x.IsDone,
|
|
||||||
EndTaskDateGE = x.EndTaskDateGE,
|
|
||||||
Name = x.Name,
|
|
||||||
RequestCancel = x.RequestCancel,
|
|
||||||
RequestTime = x.RequestTime,
|
|
||||||
Id = x.Id,
|
|
||||||
CreateTaskDateGE = x.CreateTaskDateGE,
|
|
||||||
IsCancel = x.IsCancel,
|
|
||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
|
||||||
Color = x.Color,
|
|
||||||
MediaCount = x.MediaCount,
|
|
||||||
HasAttachment = x.HasAttachment,
|
|
||||||
SelfName = !(x.SelfAssigned || x.SelfAssigner) ? "-" : x.SelfName,
|
|
||||||
EndTaskTime = $"{x.EndTaskDateGE.Hour}:{x.EndTaskDateGE.Minute}:{x.EndTaskDateGE.Second}" != "23:59:59"
|
|
||||||
? $"{x.EndTaskDateGE.Hour}:{x.EndTaskDateGE.Minute}"
|
|
||||||
: "",
|
|
||||||
Description = x.Description,
|
|
||||||
IsDoneRequest = x.IsDoneRequest,
|
|
||||||
CanAssign = _positionRepository.GetLastPositionValue() != positionValue,
|
|
||||||
CanDelete = x.Sender.Id == accountId,
|
|
||||||
CanEdit = x.Sender.Id == accountId && !(_accountContext.Assigns.Any(a => a.TaskId == x.Id && (a.AcceptedTimeRequest > 0 || a.IsCanceledRequest
|
|
||||||
|| a.IsDoneRequest || a.TimeRequest || a.IsCancel || a.IsDone))),
|
|
||||||
Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname,
|
|
||||||
AssignedReceiverViewModel = x.AssignViewModels.Any()
|
|
||||||
? x.AssignViewModels.MinBy(a => a.AssignedPositionValue)
|
|
||||||
: new()
|
|
||||||
{
|
|
||||||
AssignedName = "-",
|
|
||||||
AssignedPositionValue = 0
|
|
||||||
},
|
|
||||||
ScheduleType = x.ScheduleType,
|
|
||||||
ScheduleUnitType = x.ScheduleUnitType,
|
|
||||||
TaskScheduleId = x.TaskScheduleId
|
|
||||||
|
|
||||||
}).ToList();
|
|
||||||
return final;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string SetTasksColors(DateTime date, bool isCancel)
|
public string SetTasksColors(DateTime date, bool isCancel)
|
||||||
{
|
{
|
||||||
@@ -2200,23 +1888,23 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> GetRequestedTasksCount()
|
public int GetRequestedTasksCount()
|
||||||
{
|
{
|
||||||
var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
||||||
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
||||||
if (positionValue == 1)
|
if (positionValue == 1)
|
||||||
{
|
{
|
||||||
return await _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
return _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
||||||
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
||||||
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId == null).GroupBy(x => x.TaskId)
|
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId == null).GroupBy(x => x.TaskId)
|
||||||
.Select(x => x.First()).CountAsync();
|
.Select(x => x.First()).Count();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return await _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
return _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
||||||
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
||||||
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId == null).GroupBy(x => x.TaskId)
|
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId == null).GroupBy(x => x.TaskId)
|
||||||
.Select(x => x.First()).CountAsync();
|
.Select(x => x.First()).Count();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2313,7 +2001,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> RequestedAndOverdueTasksCount(long userId)
|
public int RequestedAndOverdueTasksCount(long userId)
|
||||||
{
|
{
|
||||||
var account = _accountRepository.GetIncludePositions(userId);
|
var account = _accountRepository.GetIncludePositions(userId);
|
||||||
if (account.Position == null)
|
if (account.Position == null)
|
||||||
@@ -2321,7 +2009,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
|
|
||||||
DateTime now = DateTime.Now;
|
DateTime now = DateTime.Now;
|
||||||
|
|
||||||
var overdueTasksCount = await OverdueTasksCount(userId);
|
var overdueTasksCount = OverdueTasksCount(userId);
|
||||||
|
|
||||||
|
|
||||||
//overdueTasksCount = _accountContext.Tasks.Include(x =>
|
//overdueTasksCount = _accountContext.Tasks.Include(x =>
|
||||||
@@ -2330,10 +2018,10 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
// !x.Assigns.Any(a => a.TimeRequest)
|
// !x.Assigns.Any(a => a.TimeRequest)
|
||||||
// && x.Assigns.Any(a => a.AssignedId == userId) &&
|
// && x.Assigns.Any(a => a.AssignedId == userId) &&
|
||||||
// (x.Assigns.First(a => a.AssignedId == userId).EndTaskDate.Date <= DateTime.Now.Date));
|
// (x.Assigns.First(a => a.AssignedId == userId).EndTaskDate.Date <= DateTime.Now.Date));
|
||||||
var overdueRequestsCount = await GetRequestedTasksCount();
|
var overdueRequestsCount = GetRequestedTasksCount();
|
||||||
|
|
||||||
var ticketRequested = await TasksHaveTicketRequestsCount(userId);
|
var ticketRequested = TasksHaveTicketRequestsCount(userId);
|
||||||
var overdueTicket = await TasksHaveTicketCounts(userId);
|
var overdueTicket = TasksHaveTicketCounts(userId);
|
||||||
|
|
||||||
return overdueTasksCount + overdueRequestsCount + ticketRequested + overdueTicket;
|
return overdueTasksCount + overdueRequestsCount + ticketRequested + overdueTicket;
|
||||||
}
|
}
|
||||||
@@ -2348,7 +2036,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
return overdueRequestsCount;
|
return overdueRequestsCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> OverdueTasksCount(long userId)
|
public int OverdueTasksCount(long userId)
|
||||||
{
|
{
|
||||||
var account = _accountRepository.GetIncludePositions(userId);
|
var account = _accountRepository.GetIncludePositions(userId);
|
||||||
|
|
||||||
@@ -2360,12 +2048,12 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
int overdueTasksCount;
|
int overdueTasksCount;
|
||||||
if (positionValue == 1)
|
if (positionValue == 1)
|
||||||
{
|
{
|
||||||
overdueTasksCount = await _accountContext.Assigns.Include(x => x.Task).Where(x => x.AssignedId == userId &&
|
overdueTasksCount = _accountContext.Assigns.Include(x => x.Task).Where(x => x.AssignedId == userId &&
|
||||||
x.AssignerId == userId && x.Task.Assigns.Count == 1 &&
|
x.AssignerId == userId && x.Task.Assigns.Count == 1 &&
|
||||||
!x.IsCancel && !x.IsCanceledRequest &&
|
!x.IsCancel && !x.IsCanceledRequest &&
|
||||||
!x.IsDone && !x.TimeRequest && !x.IsDoneRequest && x.EndTaskDate.Date <= DateTime.Now.Date &&
|
!x.IsDone && !x.TimeRequest && !x.IsDoneRequest && x.EndTaskDate.Date <= DateTime.Now.Date &&
|
||||||
x.Task.IsActiveString == "true" && x.Task.TicketId == null)
|
x.Task.IsActiveString == "true" && x.Task.TicketId == null)
|
||||||
.GroupBy(x => x.TaskId).Select(x => x.First()).CountAsync();
|
.GroupBy(x => x.TaskId).Select(x => x.First()).Count();
|
||||||
|
|
||||||
//overdueTasksCount = _accountContext.Tasks.Include(x =>
|
//overdueTasksCount = _accountContext.Tasks.Include(x =>
|
||||||
// x.Assigns).Count(x => !x.Assigns.Any(a => a.IsCancel) && !x.Assigns.Any(a => a.IsCanceledRequest) &&
|
// x.Assigns).Count(x => !x.Assigns.Any(a => a.IsCancel) && !x.Assigns.Any(a => a.IsCanceledRequest) &&
|
||||||
@@ -2377,49 +2065,43 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
overdueTasksCount = await _accountContext.Assigns.Include(x => x.Task).Where(x => x.AssignedId == userId &&
|
overdueTasksCount = _accountContext.Assigns.Include(x => x.Task).Where(x => x.AssignedId == userId &&
|
||||||
!x.IsCancel && !x.IsCanceledRequest &&
|
!x.IsCancel && !x.IsCanceledRequest &&
|
||||||
!x.IsDone && !x.TimeRequest && !x.IsDoneRequest && x.EndTaskDate.Date <= DateTime.Now.Date &&
|
!x.IsDone && !x.TimeRequest && !x.IsDoneRequest && x.EndTaskDate.Date <= DateTime.Now.Date &&
|
||||||
x.Task.IsActiveString == "true" && x.Task.TicketId == null)
|
x.Task.IsActiveString == "true" && x.Task.TicketId == null)
|
||||||
.GroupBy(x => x.TaskId).Select(x => x.First()).CountAsync();
|
.GroupBy(x => x.TaskId).Select(x => x.First()).Count();
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
return overdueTasksCount;
|
return overdueTasksCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Tasks> GetTasksByTaskScheduleId(long taskScheduleId)
|
public int TasksHaveTicketCounts(long userId)
|
||||||
{
|
{
|
||||||
return _accountContext.Tasks.Include(x=>x.Assigns).Where(x => x.TaskScheduleId != null && x.TaskScheduleId == taskScheduleId).ToList();
|
return _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public async Task<int> TasksHaveTicketCounts(long userId)
|
|
||||||
{
|
|
||||||
return await _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
|
||||||
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
||||||
!x.IsCanceledRequest && !x.IsDoneRequest &&
|
!x.IsCanceledRequest && !x.IsDoneRequest &&
|
||||||
!x.TimeRequest && (x.AssignerId == userId || x.AssignedId == userId) &&
|
!x.TimeRequest && (x.AssignerId == userId || x.AssignedId == userId) &&
|
||||||
(x.Task.TicketId != null && x.Task.TicketId > 0)).GroupBy(x => x.TaskId).CountAsync();
|
(x.Task.TicketId != null && x.Task.TicketId > 0)).GroupBy(x => x.TaskId).Count();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> TasksHaveTicketRequestsCount(long userId)
|
public int TasksHaveTicketRequestsCount(long userId)
|
||||||
{
|
{
|
||||||
var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
||||||
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
||||||
if (positionValue == 1)
|
if (positionValue == 1)
|
||||||
{
|
{
|
||||||
return await _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
return _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
||||||
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
||||||
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId != null && x.Task.TicketId > 0).GroupBy(x => x.TaskId)
|
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId != null && x.Task.TicketId > 0).GroupBy(x => x.TaskId)
|
||||||
.Select(x => x.First()).CountAsync();
|
.Select(x => x.First()).Count();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return await _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
return _accountContext.Assigns.Include(x => x.Task).Where(x =>
|
||||||
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
!x.IsDone && x.Task.IsActiveString == "true" && !x.IsCancel &&
|
||||||
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId != null && x.Task.TicketId > 0).GroupBy(x => x.TaskId)
|
(x.IsCanceledRequest || x.TimeRequest || x.IsDoneRequest) && (accountId == x.Task.SenderId) && x.Task.TicketId != null && x.Task.TicketId > 0).GroupBy(x => x.TaskId)
|
||||||
.Select(x => x.First()).CountAsync();
|
.Select(x => x.First()).Count();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,66 +0,0 @@
|
|||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.InfraStructure;
|
|
||||||
using AccountManagement.Application.Contracts.Media;
|
|
||||||
using AccountManagement.Application.Contracts.TaskSchedule;
|
|
||||||
using AccountManagement.Domain.TaskScheduleAgg;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
namespace AccountMangement.Infrastructure.EFCore.Repository;
|
|
||||||
|
|
||||||
public class TaskScheduleRepository: RepositoryBase<long, TaskSchedule>, ITaskScheduleRepository
|
|
||||||
{
|
|
||||||
private readonly AccountContext _accountContext;
|
|
||||||
|
|
||||||
public TaskScheduleRepository(AccountContext accountContext):base(accountContext)
|
|
||||||
{
|
|
||||||
_accountContext = accountContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<TaskScheduleDetailsViewModel> GetDetails(long id)
|
|
||||||
{
|
|
||||||
var taskSchedule=await _accountContext.TaskSchedules.Include(x=>x.TasksList).ThenInclude(x=>x.Assigns)
|
|
||||||
.Include(x=>x.TasksList).ThenInclude(x=>x.TaskMedias).ThenInclude(x=>x.Media).FirstOrDefaultAsync(x => x.id == id);
|
|
||||||
if (taskSchedule == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var firstTaskDetails = taskSchedule.TasksList.First();
|
|
||||||
|
|
||||||
var firstTimeAssigns = firstTaskDetails.Assigns.Where(x=>x.FirstTimeCreation).ToList();
|
|
||||||
|
|
||||||
var assignedIds = firstTimeAssigns.Select(x => x.AssignedId).ToList();
|
|
||||||
|
|
||||||
var senderId = firstTaskDetails.SenderId;
|
|
||||||
|
|
||||||
|
|
||||||
var assignedAccounts = await _accountContext.Accounts.Where(x => assignedIds.Contains(x.id)).ToListAsync();
|
|
||||||
|
|
||||||
var sender =
|
|
||||||
await _accountContext.Accounts.FirstOrDefaultAsync(x => senderId == x.id);
|
|
||||||
|
|
||||||
var viewModel = new TaskScheduleDetailsViewModel()
|
|
||||||
{
|
|
||||||
Title = firstTaskDetails.Title,
|
|
||||||
Description = firstTaskDetails.Description,
|
|
||||||
ContractingPartyName = firstTaskDetails.ContractingPartyName,
|
|
||||||
AssignedName = assignedAccounts.Select(x=>x.Fullname).ToList(),
|
|
||||||
CreationDateFa = firstTaskDetails.CreationDate.ToFarsi(),
|
|
||||||
SenderName = sender.Fullname,
|
|
||||||
TaskScheduleType = taskSchedule.Type,
|
|
||||||
TaskScheduleUnitType = taskSchedule.UnitType,
|
|
||||||
UnitNumber = taskSchedule.UnitNumber,
|
|
||||||
Medias = firstTaskDetails.TaskMedias.Select(x=> new MediaViewModel()
|
|
||||||
{
|
|
||||||
Category = x.Media.Category,
|
|
||||||
Id = x.MediaId,
|
|
||||||
Type = x.Media.Type,
|
|
||||||
Path = x.Media.Path,
|
|
||||||
}).ToList(),
|
|
||||||
};
|
|
||||||
return viewModel;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
|
||||||
using Company.Domain.CustomizeCheckoutAgg.ValueObjects;
|
using Company.Domain.CustomizeCheckoutAgg.ValueObjects;
|
||||||
using Company.Domain.EmployeeAgg;
|
using Company.Domain.EmployeeAgg;
|
||||||
using Company.Domain.WorkshopAgg;
|
using Company.Domain.WorkshopAgg;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||||
|
|
||||||
|
|
||||||
namespace Company.Domain.CustomizeCheckoutAgg;
|
namespace Company.Domain.CustomizeCheckoutAgg;
|
||||||
@@ -16,23 +15,22 @@ namespace Company.Domain.CustomizeCheckoutAgg;
|
|||||||
public class CustomizeCheckout : EntityBase
|
public class CustomizeCheckout : EntityBase
|
||||||
{
|
{
|
||||||
private CustomizeCheckout()
|
private CustomizeCheckout()
|
||||||
{ }
|
{
|
||||||
|
}
|
||||||
public CustomizeCheckout(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName,
|
public CustomizeCheckout(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName,
|
||||||
string employeeLName, DateTime employeeDateOfBirth,
|
string employeeLName, DateTime employeeDateOfBirth,
|
||||||
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
|
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
|
||||||
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay,
|
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay,
|
||||||
double nightWorkPay,
|
double nightWorkPay,
|
||||||
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction,
|
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction,
|
||||||
double fineAbsenceDeduction,
|
double fineAbsenceDeduction,
|
||||||
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction,
|
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction,
|
||||||
double installmentDeduction,
|
double installmentDeduction,
|
||||||
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions,
|
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions,
|
||||||
double totalPayment, string contractNo, ICollection<CustomizeCheckoutFine> checkoutFines,
|
double totalPayment, string contractNo, ICollection<CustomizeCheckoutFine> checkoutFines,
|
||||||
ICollection<CustomizeCheckoutLoanInstallments> customizeCheckoutLoanInstallments,
|
ICollection<CustomizeCheckoutLoanInstallments> customizeCheckoutLoanInstallments,
|
||||||
ICollection<CustomizeCheckoutSalaryAid> customizeCheckoutSalaryAids,
|
ICollection<CustomizeCheckoutSalaryAid> customizeCheckoutSalaryAids,
|
||||||
ICollection<CustomizeCheckoutReward> customizeCheckoutRewards, TimeSpan lateToWorkValue, double settingSalary,
|
ICollection<CustomizeCheckoutReward> customizeCheckoutRewards, TimeSpan lateToWorkValue)
|
||||||
double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift,
|
|
||||||
ICollection<CustomizeRotatingShift> customizeRotatingShifts, ICollection<CustomizeCheckoutRegularShift> employeeSettingsShifts)
|
|
||||||
{
|
{
|
||||||
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
|
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
|
||||||
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
|
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
|
||||||
@@ -76,12 +74,6 @@ public class CustomizeCheckout : EntityBase
|
|||||||
WorkshopFullName = workshopFullName;
|
WorkshopFullName = workshopFullName;
|
||||||
|
|
||||||
LateToWorkValue = lateToWorkValue;
|
LateToWorkValue = lateToWorkValue;
|
||||||
SettingSalary = settingSalary;
|
|
||||||
DailyWage = dailyWage;
|
|
||||||
ShiftStatus = shiftStatus;
|
|
||||||
IrregularShift = irregularShift;
|
|
||||||
CustomizeRotatingShifts = customizeRotatingShifts;
|
|
||||||
RegularShifts = employeeSettingsShifts;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -257,18 +249,6 @@ public class CustomizeCheckout : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public double TotalPayment { get; private set; }
|
public double TotalPayment { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public double DailyWage { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// حقوق تعیین شده
|
|
||||||
/// </summary>
|
|
||||||
public double SettingSalary { get; private set; }
|
|
||||||
|
|
||||||
public WorkshopShiftStatus ShiftStatus { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#region Values
|
#region Values
|
||||||
|
|
||||||
@@ -286,12 +266,6 @@ public class CustomizeCheckout : EntityBase
|
|||||||
public ICollection<CustomizeCheckoutSalaryAid> CustomizeCheckoutSalaryAids { get; set; }
|
public ICollection<CustomizeCheckoutSalaryAid> CustomizeCheckoutSalaryAids { get; set; }
|
||||||
public ICollection<CustomizeCheckoutReward> CustomizeCheckoutRewards { get; set; }
|
public ICollection<CustomizeCheckoutReward> CustomizeCheckoutRewards { get; set; }
|
||||||
|
|
||||||
public IrregularShift IrregularShift { get; set; }
|
|
||||||
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
|
|
||||||
public ICollection<CustomizeCheckoutRegularShift> RegularShifts { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Relations
|
#region Relations
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ using _0_Framework.Domain;
|
|||||||
using CompanyManagment.App.Contracts.CustomizeCheckout;
|
using CompanyManagment.App.Contracts.CustomizeCheckout;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Application;
|
|
||||||
|
|
||||||
namespace Company.Domain.CustomizeCheckoutAgg
|
namespace Company.Domain.CustomizeCheckoutAgg
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ public class CustomizeCheckoutLoanInstallments
|
|||||||
public string Month { get; private set; }
|
public string Month { get; private set; }
|
||||||
public string Year { get; private set; }
|
public string Year { get; private set; }
|
||||||
public string LoanRemaining { get; set; }
|
public string LoanRemaining { get; set; }
|
||||||
public IsActive IsActive { get; private set; }
|
|
||||||
public string LoanAmount { get; set; }
|
public string LoanAmount { get; set; }
|
||||||
|
public IsActive IsActive { get; private set; }
|
||||||
}
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
using System;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Base;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
||||||
|
|
||||||
namespace Company.Domain.CustomizeCheckoutAgg.ValueObjects;
|
|
||||||
|
|
||||||
public class CustomizeCheckoutRegularShift:CustomizeSifts
|
|
||||||
{
|
|
||||||
public CustomizeCheckoutRegularShift(TimeOnly startTime, TimeOnly endTime, ShiftPlacement placement) : base(startTime, endTime, placement)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,8 +6,6 @@ using Company.Domain.WorkshopAgg;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Company.Domain.CustomizeCheckoutTempAgg.ValueObjects;
|
using Company.Domain.CustomizeCheckoutTempAgg.ValueObjects;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
|
||||||
|
|
||||||
|
|
||||||
namespace Company.Domain.CustomizeCheckoutTempAgg;
|
namespace Company.Domain.CustomizeCheckoutTempAgg;
|
||||||
@@ -20,23 +18,15 @@ public class CustomizeCheckoutTemp : EntityBase
|
|||||||
{
|
{
|
||||||
LateToWorkValue = lateToWorkValue;
|
LateToWorkValue = lateToWorkValue;
|
||||||
}
|
}
|
||||||
public CustomizeCheckoutTemp(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName,
|
public CustomizeCheckoutTemp(DateTime contractStart, DateTime contractEnd, long employeeId, string employeeFName, string employeeLName, DateTime employeeDateOfBirth,
|
||||||
string employeeLName, DateTime employeeDateOfBirth,
|
|
||||||
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
|
string employeeNationalCode, string workshopFullName, long workshopId, long? contractId,
|
||||||
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay,
|
double monthlySalary, double fridayPay, double overTimePay, double baseYearsPay, double bonusesPay, double nightWorkPay,
|
||||||
double nightWorkPay,
|
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction, double fineAbsenceDeduction,
|
||||||
double marriedAllowance, double shiftPay, double familyAllowance, double leavePay, double insuranceDeduction,
|
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction, double installmentDeduction,
|
||||||
double fineAbsenceDeduction,
|
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions, double totalPayment, string contractNo,
|
||||||
double lateToWorkDeduction, double earlyExitDeduction, double rewardPay, double salaryAidDeduction,
|
ICollection<CustomizeCheckoutTempFine> checkoutFines, ICollection<CustomizeCheckoutTempLoanInstallments> customizeCheckoutLoanInstallments,
|
||||||
double installmentDeduction,
|
ICollection<CustomizeCheckoutTempSalaryAid> customizeCheckoutSalaryAids, ICollection<CustomizeCheckoutTempReward> customizeCheckoutRewards,
|
||||||
double fineDeduction, double taxDeduction, string sumOfWorkingDays, string totalClaims, string totalDeductions,
|
TimeSpan lateToWorkValue)
|
||||||
double totalPayment, string contractNo,
|
|
||||||
ICollection<CustomizeCheckoutTempFine> checkoutFines,
|
|
||||||
ICollection<CustomizeCheckoutTempLoanInstallments> customizeCheckoutLoanInstallments,
|
|
||||||
ICollection<CustomizeCheckoutTempSalaryAid> customizeCheckoutSalaryAids,
|
|
||||||
ICollection<CustomizeCheckoutTempReward> customizeCheckoutRewards,
|
|
||||||
TimeSpan lateToWorkValue, double settingSalary, double dailyWage, WorkshopShiftStatus shiftStatus, IrregularShift irregularShift,
|
|
||||||
ICollection<CustomizeRotatingShift> customizeRotatingShifts, ICollection<CustomizeCheckoutRegularShift> employeeSettingsShifts)
|
|
||||||
{
|
{
|
||||||
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
|
YearInt = Convert.ToInt32(contractStart.ToFarsi().Substring(0, 4));
|
||||||
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
|
MonthInt = Convert.ToInt32(contractStart.ToFarsi().Substring(5, 2));
|
||||||
@@ -80,13 +70,7 @@ public class CustomizeCheckoutTemp : EntityBase
|
|||||||
WorkshopFullName = workshopFullName;
|
WorkshopFullName = workshopFullName;
|
||||||
|
|
||||||
LateToWorkValue = lateToWorkValue;
|
LateToWorkValue = lateToWorkValue;
|
||||||
SettingSalary = settingSalary;
|
}
|
||||||
DailyWage = dailyWage;
|
|
||||||
ShiftStatus = shiftStatus;
|
|
||||||
IrregularShift = irregularShift;
|
|
||||||
CustomizeRotatingShifts = customizeRotatingShifts;
|
|
||||||
RegularShifts = employeeSettingsShifts;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Getters
|
#region Getters
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -119,10 +103,6 @@ public class CustomizeCheckoutTemp : EntityBase
|
|||||||
public ICollection<CustomizeCheckoutTempSalaryAid> CustomizeCheckoutSalaryAids { get; set; }
|
public ICollection<CustomizeCheckoutTempSalaryAid> CustomizeCheckoutSalaryAids { get; set; }
|
||||||
public ICollection<CustomizeCheckoutTempReward> CustomizeCheckoutRewards { get; set; }
|
public ICollection<CustomizeCheckoutTempReward> CustomizeCheckoutRewards { get; set; }
|
||||||
|
|
||||||
public IrregularShift IrregularShift { get; set; }
|
|
||||||
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
|
|
||||||
public ICollection<CustomizeCheckoutRegularShift> RegularShifts { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -274,22 +254,10 @@ public class CustomizeCheckoutTemp : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public double TotalPayment { get; private set; }
|
public double TotalPayment { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public double DailyWage { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
#region Values
|
||||||
/// حقوق تعیین شده
|
|
||||||
/// </summary>
|
|
||||||
public double SettingSalary { get; private set; }
|
|
||||||
public WorkshopShiftStatus ShiftStatus { get; set; }
|
|
||||||
|
|
||||||
|
public TimeSpan LateToWorkValue { get; private set; }
|
||||||
|
|
||||||
#region Values
|
|
||||||
|
|
||||||
public TimeSpan LateToWorkValue { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -15,5 +15,4 @@ public interface ICustomizeWorkshopEmployeeSettingsRepository : IRepository<long
|
|||||||
List<CustomizeWorkshopEmployeeSettingsViewModel> GetEmployeeSettingNotInMainGroup(long entityWorkshopId);
|
List<CustomizeWorkshopEmployeeSettingsViewModel> GetEmployeeSettingNotInMainGroup(long entityWorkshopId);
|
||||||
void RemoveByWorkshopIdAndEmployeeId(long workshopId, long employeeId);
|
void RemoveByWorkshopIdAndEmployeeId(long workshopId, long employeeId);
|
||||||
|
|
||||||
bool CheckEmployeeShiftHasChanged(EditCustomizeEmployeeSettings command);
|
|
||||||
}
|
}
|
||||||
@@ -20,14 +20,14 @@ public class Employee : EntityBase
|
|||||||
{
|
{
|
||||||
public Employee(string fName, string lName, string fatherName,
|
public Employee(string fName, string lName, string fatherName,
|
||||||
DateTime dateOfBirth, DateTime dateOfIssue, string placeOfIssue,
|
DateTime dateOfBirth, DateTime dateOfIssue, string placeOfIssue,
|
||||||
string nationalCode, string idNumber, string gender, string nationality, string idNumberSerial , string idNumberSeri ,
|
string nationalCode, string idNumber, string gender, string nationality,
|
||||||
string phone = null, string address = null, string state = null, string city = null,
|
string phone = null, string address = null, string state = null, string city = null,
|
||||||
string maritalStatus = null, string militaryService = null, string levelOfEducation = null, string fieldOfStudy = null,
|
string maritalStatus = null, string militaryService = null, string levelOfEducation = null, string fieldOfStudy = null,
|
||||||
string bankCardNumber = null, string bankBranch = null, string insuranceCode = null, string insuranceHistoryByYear = null,
|
string bankCardNumber = null, string bankBranch = null, string insuranceCode = null, string insuranceHistoryByYear = null,
|
||||||
string insuranceHistoryByMonth = null, string numberOfChildren = null, string officePhone = null,
|
string insuranceHistoryByMonth = null, string numberOfChildren = null, string officePhone = null,
|
||||||
string mclsUserName = null, string mclsPassword = null,
|
string mclsUserName = null, string mclsPassword = null,
|
||||||
string eserviceUserName = null, string eservicePassword = null,
|
string eserviceUserName = null, string eservicePassword = null,
|
||||||
string taxOfficeUserName = null, string taxOfficepassword = null, string sanaUserName = null, string sanaPassword = null )
|
string taxOfficeUserName = null, string taxOfficepassword = null, string sanaUserName = null, string sanaPassword = null)
|
||||||
{
|
{
|
||||||
FName = fName;
|
FName = fName;
|
||||||
LName = lName;
|
LName = lName;
|
||||||
@@ -146,15 +146,6 @@ public class Employee : EntityBase
|
|||||||
/// آیا پرسنل احراز هویت شده است
|
/// آیا پرسنل احراز هویت شده است
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsAuthorized { get; set; }
|
public bool IsAuthorized { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// سریال شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSerial { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// سری شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSeri { get; set; }
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -243,39 +234,5 @@ public class Employee : EntityBase
|
|||||||
IsAuthorized = true;
|
IsAuthorized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EditAuthorizeEmployee(DateTime dateOfIssue, string placeOfIssue,
|
|
||||||
string phone, string address, string state, string citi,
|
|
||||||
string maritalStatus, string militaryService, string levelOfEducation, string fieldOfStudy,
|
|
||||||
string bankCardNumber, string bankBranch, string insuranceCode, string insuranceHistoryByYear,
|
|
||||||
string insuranceHistoryByMonth, string numberOfChildren, string officePhone,
|
|
||||||
string mclsUserName, string mclsPassword, string eserviceUserName, string eservicePassword, string taxOfficeUserName, string taxOfficepassword, string sanaUserName, string sanaPassword)
|
|
||||||
{
|
|
||||||
DateOfIssue = dateOfIssue;
|
|
||||||
PlaceOfIssue = placeOfIssue;
|
|
||||||
Phone = phone;
|
|
||||||
Address = address;
|
|
||||||
State = state;
|
|
||||||
City = citi;
|
|
||||||
MaritalStatus = maritalStatus;
|
|
||||||
MilitaryService = militaryService;
|
|
||||||
LevelOfEducation = levelOfEducation;
|
|
||||||
FieldOfStudy = fieldOfStudy;
|
|
||||||
BankCardNumber = bankCardNumber;
|
|
||||||
BankBranch = bankBranch;
|
|
||||||
InsuranceCode = insuranceCode;
|
|
||||||
InsuranceHistoryByYear = insuranceHistoryByYear;
|
|
||||||
InsuranceHistoryByMonth = insuranceHistoryByMonth;
|
|
||||||
NumberOfChildren = numberOfChildren;
|
|
||||||
OfficePhone = OfficePhone;
|
|
||||||
MclsUserName = mclsUserName;
|
|
||||||
MclsPassword = mclsPassword;
|
|
||||||
EserviceUserName = eserviceUserName;
|
|
||||||
EservicePassword = eservicePassword;
|
|
||||||
TaxOfficeUserName = taxOfficeUserName;
|
|
||||||
TaxOfficepassword = taxOfficepassword;
|
|
||||||
SanaUserName = sanaUserName;
|
|
||||||
SanaPassword = sanaPassword;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,6 @@ public interface IEmployeeRepository : IRepository<long, Employee>
|
|||||||
|
|
||||||
Employee GetIgnoreQueryFilter(long id);
|
Employee GetIgnoreQueryFilter(long id);
|
||||||
|
|
||||||
Task<List<EmployeeSelectListViewModel>> WorkedEmployeesInWorkshopSelectList(long workshopId);
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
using System;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
|
|
||||||
namespace Company.Domain.EmployeeAuthorizeTempAgg;
|
|
||||||
|
|
||||||
public class EmployeeAuthorizeTemp:EntityBase
|
|
||||||
{
|
|
||||||
public EmployeeAuthorizeTemp(Gender gender, string fName, string lName, string fatherName, DateTime birthDate, string nationalCode, string idNumber, string idNumberSerial, string idNumberSeri)
|
|
||||||
{
|
|
||||||
Gender = gender;
|
|
||||||
FName = fName;
|
|
||||||
LName = lName;
|
|
||||||
FatherName = fatherName;
|
|
||||||
BirthDate = birthDate;
|
|
||||||
NationalCode = nationalCode;
|
|
||||||
IdNumber = idNumber;
|
|
||||||
IdNumberSerial = idNumberSerial;
|
|
||||||
IdNumberSeri = idNumberSeri;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Gender Gender { get; private set; }
|
|
||||||
public string FName { get; private set; }
|
|
||||||
public string LName { get; private set; }
|
|
||||||
public string FatherName { get; private set; }
|
|
||||||
public DateTime BirthDate { get; private set; }
|
|
||||||
/// <summary>
|
|
||||||
/// کدملی
|
|
||||||
/// </summary>
|
|
||||||
public string NationalCode { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// شماره شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumber { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// سریال شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSerial { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// سری شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSeri { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
|
|
||||||
namespace Company.Domain.EmployeeAuthorizeTempAgg;
|
|
||||||
|
|
||||||
public interface IEmployeeAuthorizeTempRepository:IRepository<long,EmployeeAuthorizeTemp>
|
|
||||||
{
|
|
||||||
Task<EmployeeAuthorizeTemp> GetByNationalCode(string nationalCode);
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using _0_Framework.Domain;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
using CompanyManagment.App.Contracts.EmployeeClientTemp;
|
using CompanyManagment.App.Contracts.EmployeeClientTemp;
|
||||||
|
|
||||||
namespace Company.Domain.EmployeeClientTempAgg;
|
namespace Company.Domain.EmployeeClientTempAgg;
|
||||||
@@ -10,5 +8,4 @@ public interface IEmployeeClientTempRepository : IRepository<long, EmployeeClien
|
|||||||
EmployeeClientTemp GetByEmployeeIdAndWorkshopId(long employeeId, long commandWorkshopId);
|
EmployeeClientTemp GetByEmployeeIdAndWorkshopId(long employeeId, long commandWorkshopId);
|
||||||
EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId);
|
EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId);
|
||||||
void Remove(EmployeeClientTemp entity);
|
void Remove(EmployeeClientTemp entity);
|
||||||
Task<List<EmployeeClientTempViewModel>> GetByEmployeeId(long employeeId);
|
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,6 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.EmployeeComputeOptions;
|
using CompanyManagment.App.Contracts.EmployeeComputeOptions;
|
||||||
using CompanyManagment.App.Contracts.Workshop;
|
|
||||||
|
|
||||||
namespace Company.Domain.EmployeeComputeOptionsAgg
|
namespace Company.Domain.EmployeeComputeOptionsAgg
|
||||||
{
|
{
|
||||||
@@ -15,7 +14,5 @@ namespace Company.Domain.EmployeeComputeOptionsAgg
|
|||||||
EmployeeComputeOptionsViewModel GetEmployeeOptions(long workshopId, long employeeId);
|
EmployeeComputeOptionsViewModel GetEmployeeOptions(long workshopId, long employeeId);
|
||||||
|
|
||||||
List<EmployeeComputeOptionsViewModel> GetAllByWorkshopId(long workshopId);
|
List<EmployeeComputeOptionsViewModel> GetAllByWorkshopId(long workshopId);
|
||||||
|
|
||||||
List<WorkshopViewModel> TestBonusesBugWorkshops();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,105 +7,100 @@ using System.Collections.Generic;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using Microsoft.AspNetCore.JsonPatch.Operations;
|
using Microsoft.AspNetCore.JsonPatch.Operations;
|
||||||
|
|
||||||
namespace Company.Domain.EmployeeDocumentItemAgg;
|
namespace Company.Domain.EmployeeDocumentItemAgg
|
||||||
|
|
||||||
public class EmployeeDocumentItem : EntityBase
|
|
||||||
{
|
{
|
||||||
private EmployeeDocumentItem() { }
|
public class EmployeeDocumentItem : EntityBase
|
||||||
public long WorkshopId { get; private set; }
|
|
||||||
public long EmployeeId { get; private set; }
|
|
||||||
|
|
||||||
public long UploaderId { get; private set; }
|
|
||||||
public UserType UploaderType { get; private set; }
|
|
||||||
public long UploaderRoleId { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
public long ReviewedById { get; private set; }
|
|
||||||
public string RejectionReason { get; private set; }
|
|
||||||
public DocumentStatus DocumentStatus { get; private set; }
|
|
||||||
public long MediaId { get; private set; }
|
|
||||||
|
|
||||||
public DateTime? ConfirmationDateTime { get; private set; }
|
|
||||||
public DocumentItemLabel DocumentLabel { get; private set; }
|
|
||||||
|
|
||||||
public long EmployeeDocumentId { get; private set; }
|
|
||||||
public virtual EmployeeDocuments EmployeeDocuments { get; private set; }
|
|
||||||
|
|
||||||
public long? EmployeeDocumentsAdminViewId { get; private set; }
|
|
||||||
public EmployeeDocumentsAdminSelection EmployeeDocumentsAdminSelection { get; private set; }
|
|
||||||
|
|
||||||
public List<EmployeeDocumentItemLog> ItemLogs { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
public EmployeeDocumentItem(long workshopId, long employeeId, long mediaId, long employeeDocumentId, DocumentItemLabel documentLabel, long uploaderId,
|
|
||||||
UserType uploaderType, long roleId, DocumentStatus documentStatus = DocumentStatus.Unsubmitted)
|
|
||||||
{
|
{
|
||||||
MediaId = mediaId;
|
|
||||||
UploaderId = uploaderId;
|
public long WorkshopId { get; private set; }
|
||||||
UploaderType = uploaderType;
|
public long EmployeeId { get; private set; }
|
||||||
UploaderRoleId = uploaderType == UserType.Admin ? roleId : -1;
|
|
||||||
EmployeeId = employeeId;
|
public long UploaderId { get; private set; }
|
||||||
WorkshopId = workshopId;
|
public UserType UploaderType { get; private set; }
|
||||||
DocumentStatus = documentStatus;
|
|
||||||
if (documentStatus == DocumentStatus.Confirmed)
|
|
||||||
|
public long ReviewedById { get; private set; }
|
||||||
|
public string RejectionReason { get; private set; }
|
||||||
|
public DocumentStatus DocumentStatus { get; private set; }
|
||||||
|
public long MediaId { get; private set; }
|
||||||
|
|
||||||
|
public DateTime? ConfirmationDateTime { get; private set; }
|
||||||
|
public DocumentItemLabel DocumentLabel { get; private set; }
|
||||||
|
|
||||||
|
public long EmployeeDocumentId { get; private set; }
|
||||||
|
public virtual EmployeeDocuments EmployeeDocuments { get; private set; }
|
||||||
|
|
||||||
|
public long? EmployeeDocumentsAdminViewId { get; private set; }
|
||||||
|
public EmployeeDocumentsAdminSelection EmployeeDocumentsAdminSelection { get; private set; }
|
||||||
|
|
||||||
|
public List<EmployeeDocumentItemLog> ItemLogs { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public EmployeeDocumentItem(long workshopId,long employeeId, long mediaId, long employeeDocumentId, DocumentItemLabel documentLabel, long uploaderId,
|
||||||
|
UserType uploaderType, DocumentStatus documentStatus = DocumentStatus.Unsubmitted)
|
||||||
|
{
|
||||||
|
MediaId = mediaId;
|
||||||
|
UploaderId = uploaderId;
|
||||||
|
UploaderType = uploaderType;
|
||||||
|
EmployeeId = employeeId;
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
DocumentStatus = documentStatus;
|
||||||
|
if (documentStatus == DocumentStatus.Confirmed)
|
||||||
|
ConfirmationDateTime = DateTime.Now;
|
||||||
|
DocumentLabel = documentLabel;
|
||||||
|
EmployeeDocumentId = employeeDocumentId;
|
||||||
|
ItemLogs =
|
||||||
|
[
|
||||||
|
new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.CreatedNewItem, uploaderId, uploaderType)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void Confirm(long operatorId, UserType userType)
|
||||||
|
{
|
||||||
|
ReviewedById = operatorId;
|
||||||
|
DocumentStatus = DocumentStatus.Confirmed;
|
||||||
ConfirmationDateTime = DateTime.Now;
|
ConfirmationDateTime = DateTime.Now;
|
||||||
DocumentLabel = documentLabel;
|
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.ConfirmedItem, operatorId, userType));
|
||||||
EmployeeDocumentId = employeeDocumentId;
|
}
|
||||||
ItemLogs =
|
|
||||||
[
|
public void Reject(long operatorId, string rejectionReason, UserType userType)
|
||||||
new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.CreatedNewItem, uploaderId, uploaderType)
|
{
|
||||||
];
|
RejectionReason = rejectionReason;
|
||||||
|
DocumentStatus = DocumentStatus.Rejected;
|
||||||
|
EmployeeDocuments.UpdateHasRejectedItems();
|
||||||
|
ReviewedById = operatorId;
|
||||||
|
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.RejectedItem, operatorId, userType, rejectionReason));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Delete(long operatorId, UserType operatorType)
|
||||||
|
{
|
||||||
|
DocumentStatus = DocumentStatus.Deleted;
|
||||||
|
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.DeletedItem, operatorId, operatorType));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AdminSelect(long adminViewId)
|
||||||
|
{
|
||||||
|
EmployeeDocumentsAdminViewId = adminViewId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AdminDeselect()
|
||||||
|
{
|
||||||
|
EmployeeDocumentsAdminViewId = 0;
|
||||||
|
}
|
||||||
|
public void SubmitByClient(long operatorId,UserType operatorType)
|
||||||
|
{
|
||||||
|
DocumentStatus = DocumentStatus.SubmittedByClient;
|
||||||
|
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType));
|
||||||
|
EmployeeDocuments.UpdateHasRejectedItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SubmitByAdmin(long operatorId, UserType operatorType)
|
||||||
|
{
|
||||||
|
DocumentStatus = DocumentStatus.SubmittedByAdmin;
|
||||||
|
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType));
|
||||||
|
EmployeeDocuments.UpdateHasRejectedItems();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
public void Confirm(long operatorId, UserType userType)
|
|
||||||
{
|
|
||||||
ReviewedById = operatorId;
|
|
||||||
DocumentStatus = DocumentStatus.Confirmed;
|
|
||||||
ConfirmationDateTime = DateTime.Now;
|
|
||||||
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.ConfirmedItem, operatorId, userType));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Reject(long operatorId, string rejectionReason, UserType userType)
|
|
||||||
{
|
|
||||||
RejectionReason = rejectionReason;
|
|
||||||
DocumentStatus = DocumentStatus.Rejected;
|
|
||||||
EmployeeDocuments.UpdateHasRejectedItems();
|
|
||||||
ReviewedById = operatorId;
|
|
||||||
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.RejectedItem, operatorId, userType, rejectionReason));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Delete(long operatorId, UserType operatorType)
|
|
||||||
{
|
|
||||||
DocumentStatus = DocumentStatus.Deleted;
|
|
||||||
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.DeletedItem, operatorId, operatorType));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AdminSelect(long adminViewId)
|
|
||||||
{
|
|
||||||
EmployeeDocumentsAdminViewId = adminViewId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AdminDeselect()
|
|
||||||
{
|
|
||||||
EmployeeDocumentsAdminViewId = 0;
|
|
||||||
}
|
|
||||||
public void SubmitByClient(long operatorId, UserType operatorType)
|
|
||||||
{
|
|
||||||
DocumentStatus = DocumentStatus.SubmittedByClient;
|
|
||||||
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType));
|
|
||||||
EmployeeDocuments.UpdateHasRejectedItems();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SubmitByAdmin(long operatorId, UserType operatorType)
|
|
||||||
{
|
|
||||||
DocumentStatus = DocumentStatus.SubmittedByAdmin;
|
|
||||||
ItemLogs.Add(new EmployeeDocumentItemLog(EmployeeDocumentItemOperation.SubmittedItems, operatorId, operatorType));
|
|
||||||
EmployeeDocuments.UpdateHasRejectedItems();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SetRoleId(long roleId)
|
|
||||||
{
|
|
||||||
UploaderRoleId = roleId;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ namespace Company.Domain.EmployeeDocumentsAgg
|
|||||||
{
|
{
|
||||||
List<DocumentItemLabel> requiredDocuments =
|
List<DocumentItemLabel> requiredDocuments =
|
||||||
[
|
[
|
||||||
DocumentItemLabel.IdCardPage1,/* DocumentItemLabel.IdCardPage2, DocumentItemLabel.IdCardPage3, DocumentItemLabel.NationalCardRear,*/
|
DocumentItemLabel.IdCardPage1, DocumentItemLabel.IdCardPage2, DocumentItemLabel.IdCardPage3, DocumentItemLabel.NationalCardRear,
|
||||||
DocumentItemLabel.NationalCardFront,/*DocumentItemLabel.EmployeePicture*/
|
DocumentItemLabel.NationalCardFront,DocumentItemLabel.EmployeePicture
|
||||||
];
|
];
|
||||||
|
|
||||||
//if (gender == "مرد")
|
if (gender == "مرد")
|
||||||
// requiredDocuments.Add(DocumentItemLabel.MilitaryServiceCard);
|
requiredDocuments.Add(DocumentItemLabel.MilitaryServiceCard);
|
||||||
|
|
||||||
return requiredDocuments;
|
return requiredDocuments;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ using CompanyManagment.App.Contracts.Workshop;
|
|||||||
namespace Company.Domain.EmployeeDocumentsAgg
|
namespace Company.Domain.EmployeeDocumentsAgg
|
||||||
{
|
{
|
||||||
public interface IEmployeeDocumentsRepository : IRepository<long, EmployeeDocuments>
|
public interface IEmployeeDocumentsRepository : IRepository<long, EmployeeDocuments>
|
||||||
{
|
{
|
||||||
EmployeeDocuments GetByEmployeeIdWorkshopId(long employeeId, long workshopId);
|
EmployeeDocuments GetByEmployeeIdWorkshopId(long employeeId, long workshopId);
|
||||||
EmployeeDocumentsViewModel GetViewModelByEmployeeIdWorkshopId(long employeeId, long workshopId);
|
EmployeeDocumentsViewModel GetViewModelByEmployeeIdWorkshopId(long employeeId, long workshopId);
|
||||||
List<EmployeeDocumentsViewModel> SearchForClient(SearchEmployeeDocuments cmd);
|
List<EmployeeDocumentsViewModel> SearchForClient(SearchEmployeeDocuments cmd);
|
||||||
@@ -30,76 +30,5 @@ namespace Company.Domain.EmployeeDocumentsAgg
|
|||||||
Task<int> GetAdminWorkFlowCountForNewEmployees(List<long> workshopIds);
|
Task<int> GetAdminWorkFlowCountForNewEmployees(List<long> workshopIds);
|
||||||
Task<int> GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List<long> workshopIds);
|
Task<int> GetAdminWorkFlowCountForSubmittedAndRejectedDocuments(List<long> workshopIds);
|
||||||
List<EmployeeDocumentsViewModel> GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId);
|
List<EmployeeDocumentsViewModel> GetDocumentsAwaitingReviewByWorkshopIdForCheckerWorkFlow(long workshopId);
|
||||||
|
|
||||||
#region Mahan
|
|
||||||
/// <summary>
|
|
||||||
/// کارگاهی که افزودن پرسنل کرده اند. بر اساس نقش فیلتر میشوند
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<ICollection<WorkshopWithEmployeeDocumentsViewModel>> GetWorkshopDocumentCreatedEmployeeForAdmin(
|
|
||||||
List<long> workshops, long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///کارگاه های مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<ICollection<WorkshopWithEmployeeDocumentsViewModel>> GetWorkshopDocumentRejectedForAdmin(
|
|
||||||
List<long> workshops, long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId,
|
|
||||||
long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// کارگاه هایی که افزودن پرسنل کرده اند و مدارک آنها ناقص است
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<WorkshopWithEmployeeDocumentsViewModel>> GetCreatedEmployeesWorkshopDocumentForAdmin(
|
|
||||||
List<long> workshops,long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// پرسنلی که افزوده شده اند در کارگاه و آپلود مدارک آنها ناقص است
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// لیست کارگاه هایی که مدارک آپلود شده توسط کلاینت برگشت خورده است در کارپوشه ادمین
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<WorkshopWithEmployeeDocumentsViewModel>> GetClientRejectedDocumentWorkshopsForAdmin(
|
|
||||||
List<long> workshops, long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدارک های آپلود شده توسط کلاینت در کارگاه که برگشت خورده اند در کارپوشه ادمین
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدارک های برگشت خورده برای کلاینت
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <param name="accountId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetClientRejectedDocumentForClient(long workshopId, long accountId);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework_b.Domain;
|
using _0_Framework_b.Domain;
|
||||||
using CompanyManagment.App.Contracts.Employee;
|
using CompanyManagment.App.Contracts.Employee;
|
||||||
using CompanyManagment.App.Contracts.Employer;
|
using CompanyManagment.App.Contracts.Employer;
|
||||||
@@ -17,17 +16,4 @@ public interface IFileRepository : IRepository<long, File1>
|
|||||||
string GetEmployerFullNameById(long id);
|
string GetEmployerFullNameById(long id);
|
||||||
List<EmployeeViewModel> GetAllEmploees();
|
List<EmployeeViewModel> GetAllEmploees();
|
||||||
List<EmployerViewModel> GetAllEmployers();
|
List<EmployerViewModel> GetAllEmployers();
|
||||||
|
|
||||||
#region Mahan
|
|
||||||
|
|
||||||
|
|
||||||
Task<List<FileExcelViewModel>> GetExcelDetails();
|
|
||||||
Task<List<FileListViewModel>> GetList(GetFileSearchModel searchModel);
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
Task<List<string>> GetAllArchiveNo();
|
|
||||||
Task<List<string>> GetAllClassFiles();
|
|
||||||
Task<List<EmployeeSelectListViewModel>> GetClientAndLitigation();
|
|
||||||
Task<EditEmployee> GetClientDetails(long fileId);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework_b.Domain;
|
using _0_Framework_b.Domain;
|
||||||
using CompanyManagment.App.Contracts.FileAlert;
|
using CompanyManagment.App.Contracts.FileAlert;
|
||||||
|
|
||||||
@@ -11,5 +10,4 @@ public interface IFileAlertRepository : IRepository<long, FileAlert>
|
|||||||
FileAlertViewModel GetDetails(long id);
|
FileAlertViewModel GetDetails(long id);
|
||||||
void Remove(long id);
|
void Remove(long id);
|
||||||
List<EditFileAlert> Search(FileAlertSearchModel searchModel);
|
List<EditFileAlert> Search(FileAlertSearchModel searchModel);
|
||||||
Task<List<FileAlertViewModel>> GetFileAlerts(FileAlertSearchModel searchModel);
|
|
||||||
}
|
}
|
||||||
@@ -6,11 +6,7 @@ namespace Company.Domain.FineAgg;
|
|||||||
|
|
||||||
public class Fine:EntityBase
|
public class Fine:EntityBase
|
||||||
{
|
{
|
||||||
private Fine()
|
public Fine(long employeeId, long workshopId, string title, double amount,DateTime fineDate)
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
public Fine(long employeeId, long workshopId, string title, double amount,DateTime fineDate, long createdByAccountId, UserType createdByUserType)
|
|
||||||
{
|
{
|
||||||
EmployeeId = employeeId;
|
EmployeeId = employeeId;
|
||||||
WorkshopId = workshopId;
|
WorkshopId = workshopId;
|
||||||
@@ -19,9 +15,6 @@ public class Fine:EntityBase
|
|||||||
IsActive = IsActive.True;
|
IsActive = IsActive.True;
|
||||||
FineDate = fineDate;
|
FineDate = fineDate;
|
||||||
|
|
||||||
CreatedByUserType = createdByUserType;
|
|
||||||
CreatedByAccountId = createdByAccountId;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public long EmployeeId { get; private set; }
|
public long EmployeeId { get; private set; }
|
||||||
@@ -31,23 +24,7 @@ public class Fine:EntityBase
|
|||||||
public IsActive IsActive { get; private set; }
|
public IsActive IsActive { get; private set; }
|
||||||
public DateTime FineDate { get; private set; }
|
public DateTime FineDate { get; private set; }
|
||||||
|
|
||||||
|
public void DeActive()
|
||||||
/// <summary>
|
|
||||||
/// شخصی که جریمه را ساخته است
|
|
||||||
/// </summary>
|
|
||||||
public long CreatedByAccountId { get; private set; }
|
|
||||||
public UserType CreatedByUserType { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// شخصی که جریمه را ویرایش کرده است
|
|
||||||
/// </summary>
|
|
||||||
public long LastModifiedByAccountId { get; private set; }
|
|
||||||
public UserType LastModifiedByUserType { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void DeActive()
|
|
||||||
{
|
{
|
||||||
IsActive = IsActive.False;
|
IsActive = IsActive.False;
|
||||||
}
|
}
|
||||||
@@ -57,15 +34,14 @@ public class Fine:EntityBase
|
|||||||
IsActive = IsActive.True;
|
IsActive = IsActive.True;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Edit(long employeeId, long workshopId, string title, double amount,DateTime fineDate, long modifiedByAccountId, UserType modifiedByUserType)
|
public void Edit(long employeeId, long workshopId, string title, double amount,DateTime fineDate)
|
||||||
{
|
{
|
||||||
EmployeeId = employeeId;
|
EmployeeId = employeeId;
|
||||||
WorkshopId = workshopId;
|
WorkshopId = workshopId;
|
||||||
Title = title;
|
Title = title;
|
||||||
Amount = amount;
|
Amount = amount;
|
||||||
FineDate = fineDate;
|
FineDate = fineDate;
|
||||||
LastModifiedByAccountId = modifiedByAccountId;
|
|
||||||
LastModifiedByUserType = modifiedByUserType;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,14 +12,4 @@ public interface IFineRepository : IRepository<long, Fine>
|
|||||||
void Remove(Fine entity);
|
void Remove(Fine entity);
|
||||||
void RemoveRange(IEnumerable<Fine> entityEnumerable);
|
void RemoveRange(IEnumerable<Fine> entityEnumerable);
|
||||||
|
|
||||||
|
|
||||||
#region Pooya
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند
|
|
||||||
/// </summary>
|
|
||||||
FinesGroupedViewModel GetSearchListAsGrouped(FineSearchViewModel searchModel);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
using _0_Framework.Domain;
|
|
||||||
using CompanyManagment.App.Contracts.InstitutionPlan;
|
|
||||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Company.Domain.InstitutionPlanAgg;
|
|
||||||
|
|
||||||
public interface IPlanPercentageRepository : IRepository<long, PlanPercentage>
|
|
||||||
{
|
|
||||||
EditInstitutionPlanPercentage GetById(long id);
|
|
||||||
|
|
||||||
EditInstitutionPlanPercentage GetByFirst();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// دریافت لیست 30 تایی مبالغ سرویس ها به ازای هر نفر
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="pageIndex"></param>
|
|
||||||
/// <param name="countPeron"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
List<InstitutionPlanViewModel> GetInstitutionPlanList(int pageIndex, int countPeron);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// دریافت مبالغ سرویس ها برای هر کارگاه
|
|
||||||
/// بر اساس تعداد پرسنل کارگاه
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="command"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
InstitutionPlanViewModel GetInstitutionPlanForWorkshop(WorkshopTempViewModel command);
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
using _0_Framework.Domain;
|
|
||||||
|
|
||||||
namespace Company.Domain.InstitutionPlanAgg;
|
|
||||||
|
|
||||||
public class PlanPercentage : EntityBaseWithoutCreationDate
|
|
||||||
{
|
|
||||||
public PlanPercentage(int contractAndCheckoutPercent, int insurancePercent, int rollCallPercent, int customizeCheckoutPercent, int contractAndCheckoutInPersonPercent, int insuranceInPersonPercent)
|
|
||||||
{
|
|
||||||
ContractAndCheckoutPercent = contractAndCheckoutPercent;
|
|
||||||
InsurancePercent = insurancePercent;
|
|
||||||
RollCallPercent = rollCallPercent;
|
|
||||||
CustomizeCheckoutPercent = customizeCheckoutPercent;
|
|
||||||
ContractAndCheckoutInPersonPercent = contractAndCheckoutInPersonPercent;
|
|
||||||
InsuranceInPersonPercent = insuranceInPersonPercent;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// قرارداد و تصفیه
|
|
||||||
/// درصد از مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public int ContractAndCheckoutPercent { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// بیمه
|
|
||||||
/// درصد از مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public int InsurancePercent { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// حضورغباب
|
|
||||||
/// درصد از مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public int RollCallPercent { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// فیش غیر رسمی
|
|
||||||
/// درصد از مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public int CustomizeCheckoutPercent { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// خدمات حضوری قرداد و تصفیه
|
|
||||||
/// درصد از مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public int ContractAndCheckoutInPersonPercent { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// خدمات حضوری بیمه
|
|
||||||
/// درصد از مزد روزانه
|
|
||||||
/// </summary>
|
|
||||||
public int InsuranceInPersonPercent { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
public void Edit(int contractAndCheckoutPercent, int insurancePercent, int rollCallPercent, int customizeCheckoutPercent, int contractAndCheckoutInPersonPercent, int insuranceInPersonPercent)
|
|
||||||
{
|
|
||||||
ContractAndCheckoutPercent = contractAndCheckoutPercent;
|
|
||||||
InsurancePercent = insurancePercent;
|
|
||||||
RollCallPercent = rollCallPercent;
|
|
||||||
CustomizeCheckoutPercent = customizeCheckoutPercent;
|
|
||||||
ContractAndCheckoutInPersonPercent = contractAndCheckoutInPersonPercent;
|
|
||||||
InsuranceInPersonPercent = insuranceInPersonPercent;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -8,7 +8,7 @@ public class Leave: EntityBase
|
|||||||
{
|
{
|
||||||
public Leave(DateTime startLeave, DateTime endLeave,
|
public Leave(DateTime startLeave, DateTime endLeave,
|
||||||
string leaveHourses, long workshopId, long employeeId,
|
string leaveHourses, long workshopId, long employeeId,
|
||||||
string paidLeaveType, string leaveType, string employeeFullName, string workshopName, bool isAccepted, string decription, int year, int month, TimeSpan shiftDuration, bool hasShiftDuration)
|
string paidLeaveType, string leaveType, string employeeFullName, string workshopName, bool isAccepted, string decription, int year, int month)
|
||||||
{
|
{
|
||||||
StartLeave = startLeave;
|
StartLeave = startLeave;
|
||||||
EndLeave = endLeave;
|
EndLeave = endLeave;
|
||||||
@@ -23,8 +23,6 @@ public class Leave: EntityBase
|
|||||||
Decription = decription;
|
Decription = decription;
|
||||||
Year = year;
|
Year = year;
|
||||||
Month = month;
|
Month = month;
|
||||||
ShiftDuration = shiftDuration;
|
|
||||||
HasShiftDuration = hasShiftDuration;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public DateTime StartLeave { get; private set; }
|
public DateTime StartLeave { get; private set; }
|
||||||
@@ -40,13 +38,9 @@ public class Leave: EntityBase
|
|||||||
public string Decription { get; private set; }
|
public string Decription { get; private set; }
|
||||||
public int Year { get; private set; }
|
public int Year { get; private set; }
|
||||||
public int Month { get; private set; }
|
public int Month { get; private set; }
|
||||||
|
|
||||||
public TimeSpan ShiftDuration { get; private set; }
|
|
||||||
public bool HasShiftDuration { get; private set; }
|
|
||||||
|
|
||||||
public void Edit(DateTime startLeave, DateTime endLeave,
|
public void Edit(DateTime startLeave, DateTime endLeave,
|
||||||
string leaveHourses, long workshopId, long employeeId,
|
string leaveHourses, long workshopId, long employeeId,
|
||||||
string paidLeaveType, string leaveType, string employeeFullName, string workshopName, bool isAccepted, string decription, int year, int month,bool hasShiftDuration,TimeSpan shiftDuration)
|
string paidLeaveType, string leaveType, string employeeFullName, string workshopName, bool isAccepted, string decription, int year, int month)
|
||||||
{
|
{
|
||||||
StartLeave = startLeave;
|
StartLeave = startLeave;
|
||||||
EndLeave = endLeave;
|
EndLeave = endLeave;
|
||||||
@@ -61,7 +55,5 @@ public class Leave: EntityBase
|
|||||||
Decription = decription;
|
Decription = decription;
|
||||||
Year = year;
|
Year = year;
|
||||||
Month = month;
|
Month = month;
|
||||||
ShiftDuration = shiftDuration;
|
|
||||||
HasShiftDuration = hasShiftDuration;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Generic;
|
using System.Threading.Tasks;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.LeftWorkTemp;
|
using CompanyManagment.App.Contracts.LeftWorkTemp;
|
||||||
|
|
||||||
@@ -15,6 +14,4 @@ public interface ILeftWorkTempRepository:IRepository<long,LeftWorkTemp>
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<GetStartWorkTempDetails> GetStartAndLeftWorkDetails(long employeeId, long workshopId);
|
Task<GetStartWorkTempDetails> GetStartAndLeftWorkDetails(long employeeId, long workshopId);
|
||||||
void Remove(LeftWorkTemp entity);
|
void Remove(LeftWorkTemp entity);
|
||||||
List<LeftWorkTempViewModel> GetLeftWorksByWorkshopId(long workshopId);
|
|
||||||
Task<List<LeftWorkTempViewModel>> GetLeftWorkTempsByEmployeeId(long employeeId);
|
|
||||||
}
|
}
|
||||||
@@ -9,14 +9,12 @@ namespace Company.Domain.LoanAgg.Entities;
|
|||||||
|
|
||||||
public class Loan : EntityBase
|
public class Loan : EntityBase
|
||||||
{
|
{
|
||||||
private Loan(long createdByAccountId, UserType createdByUserType)
|
private Loan()
|
||||||
{
|
{
|
||||||
CreatedByAccountId = createdByAccountId;
|
|
||||||
CreatedByUserType = createdByUserType;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Loan(long employeeId, long workshopId, DateTime startDateTime,
|
public Loan(long employeeId, long workshopId, DateTime startDateTime,
|
||||||
string count, double amount, double amountPerMonth,ICollection<LoanInstallment> loanInstallments, bool getRounded, DateTime loanGrantDate, long createdByAccountId, UserType createdByUserType)
|
string count, double amount, double amountPerMonth,ICollection<LoanInstallment> loanInstallments, bool getRounded, DateTime loanGrantDate)
|
||||||
{
|
{
|
||||||
EmployeeId = employeeId;
|
EmployeeId = employeeId;
|
||||||
WorkshopId = workshopId;
|
WorkshopId = workshopId;
|
||||||
@@ -27,8 +25,6 @@ public class Loan : EntityBase
|
|||||||
LoanInstallments = loanInstallments;
|
LoanInstallments = loanInstallments;
|
||||||
GetRounded = getRounded;
|
GetRounded = getRounded;
|
||||||
LoanGrantDate = loanGrantDate;
|
LoanGrantDate = loanGrantDate;
|
||||||
CreatedByAccountId = createdByAccountId;
|
|
||||||
CreatedByUserType = createdByUserType;
|
|
||||||
//for (int i = 0; i < Convert.ToInt32(count); i++)
|
//for (int i = 0; i < Convert.ToInt32(count); i++)
|
||||||
//{
|
//{
|
||||||
// LoanInstallment newInstallment = new(amountPerMonth, month.ToString("00"), year.ToString("0000"));
|
// LoanInstallment newInstallment = new(amountPerMonth, month.ToString("00"), year.ToString("0000"));
|
||||||
@@ -68,11 +64,7 @@ public class Loan : EntityBase
|
|||||||
public bool GetRounded { get; private set; }
|
public bool GetRounded { get; private set; }
|
||||||
public ICollection<LoanInstallment> LoanInstallments { get; private set; }
|
public ICollection<LoanInstallment> LoanInstallments { get; private set; }
|
||||||
|
|
||||||
|
public void DeActiveInstallment(string year, string month)
|
||||||
public long CreatedByAccountId { get; private set; }
|
|
||||||
public UserType CreatedByUserType { get; private set; }
|
|
||||||
|
|
||||||
public void DeActiveInstallment(string year, string month)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
var installment = LoanInstallments.FirstOrDefault(x => x.Month == month && x.Year == year);
|
var installment = LoanInstallments.FirstOrDefault(x => x.Month == month && x.Year == year);
|
||||||
|
|||||||
@@ -2,17 +2,14 @@
|
|||||||
using Company.Domain.LoanAgg.Entities;
|
using Company.Domain.LoanAgg.Entities;
|
||||||
using CompanyManagment.App.Contracts.Loan;
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Company.Domain.LoanAgg;
|
namespace Company.Domain.LoanAgg;
|
||||||
|
|
||||||
public interface ILoanRepository:IRepository<long,Loan>
|
public interface ILoanRepository:IRepository<long,Loan>
|
||||||
{
|
{
|
||||||
List<LoanViewModel> GetSearchList(LoanSearchViewModel searchViewModel);
|
List<LoanViewModel> GetSearchList(LoanSearchViewModel searchViewModel);
|
||||||
Task<LoanDetailsViewModel> GetDetails(long id);
|
LoanViewModel GetDetails(long id);
|
||||||
void Remove(Loan entity);
|
void Remove(Loan entity);
|
||||||
List<Loan> GetBy(IEnumerable<long> ids);
|
List<Loan> GetBy(IEnumerable<long> ids);
|
||||||
void RemoveRange(IEnumerable<Loan> loans);
|
void RemoveRange(IEnumerable<Loan> loans);
|
||||||
|
|
||||||
LoanGroupedViewModel GetSearchListAsGrouped(LoanSearchViewModel searchModel);
|
|
||||||
}
|
}
|
||||||
@@ -18,6 +18,6 @@ public interface IRewardRepository : IRepository<long, Reward>
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند
|
/// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند
|
||||||
/// </summary>
|
/// </summary>
|
||||||
RewardsGroupedViewModel GetSearchListAsGrouped(RewardSearchModel searchModel);
|
List<MonthlyGroupedEmployeeRewardsViewModel> GetSearchListByEmployee(RewardSearchModel searchModel);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -8,19 +8,18 @@ namespace Company.Domain.RewardAgg;
|
|||||||
|
|
||||||
public class Reward:EntityBase
|
public class Reward:EntityBase
|
||||||
{
|
{
|
||||||
private Reward()
|
private Reward(string title)
|
||||||
{
|
{
|
||||||
|
Title = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Reward(long employeeId, long workshopId, double amount, string description, long rewardedByAccountId,UserType userType, DateTime grantDate, string title , RewardType type = RewardType.None)
|
public Reward(long employeeId, long workshopId, double amount, string description, long rewardedByAccountId, DateTime grantDate, string title , RewardType type = RewardType.None)
|
||||||
{
|
{
|
||||||
EmployeeId = employeeId;
|
EmployeeId = employeeId;
|
||||||
WorkshopId = workshopId;
|
WorkshopId = workshopId;
|
||||||
Amount = amount;
|
Amount = amount;
|
||||||
Description = description;
|
Description = description;
|
||||||
CreatedByAccountId = rewardedByAccountId;
|
RewardedByAccountId = rewardedByAccountId;
|
||||||
CreatedByUserType = userType;
|
|
||||||
GrantDate = grantDate;
|
GrantDate = grantDate;
|
||||||
Title = title;
|
Title = title;
|
||||||
IsActive = IsActive.True;
|
IsActive = IsActive.True;
|
||||||
@@ -46,35 +45,24 @@ public class Reward:EntityBase
|
|||||||
public string Description { get; private set; }
|
public string Description { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// شخصی که پاداش را ساخته است
|
/// شخصی که پاداش را داده است
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long CreatedByAccountId { get; private set; }
|
public long RewardedByAccountId { get; private set; }
|
||||||
public UserType CreatedByUserType { get;private set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// شخصی که پاداش را ویرایش کرده است
|
/// تاریخ اعطای پاداش
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long LastModifiedByAccountId { get; private set; }
|
public DateTime GrantDate { get; set; }
|
||||||
public UserType LastModifiedByUserType { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// تاریخ اعطای پاداش
|
|
||||||
/// </summary>
|
|
||||||
public DateTime GrantDate { get; set; }
|
|
||||||
|
|
||||||
public RewardType RewardType { get; set; }
|
public RewardType RewardType { get; set; }
|
||||||
|
|
||||||
public IsActive IsActive { get; private set; }
|
public IsActive IsActive { get; private set; }
|
||||||
|
|
||||||
|
public void Edit(double amount, string description, long rewardedByAccountId, DateTime grantDate,string title)
|
||||||
public void Edit(double amount, string description, long modifiedByAccountId, UserType userType, DateTime grantDate,string title)
|
|
||||||
{
|
{
|
||||||
Amount = amount;
|
Amount = amount;
|
||||||
Description = description;
|
Description = description;
|
||||||
LastModifiedByAccountId = modifiedByAccountId;
|
RewardedByAccountId = rewardedByAccountId;
|
||||||
LastModifiedByUserType = userType;
|
|
||||||
GrantDate = grantDate;
|
GrantDate = grantDate;
|
||||||
Title = title;
|
Title = title;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ using System.Threading.Tasks;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using OfficeOpenXml;
|
using OfficeOpenXml;
|
||||||
using OfficeOpenXml.Drawing.Chart;
|
using OfficeOpenXml.Drawing.Chart;
|
||||||
using System.Collections;
|
|
||||||
|
|
||||||
namespace Company.Domain.RollCallAgg.DomainService;
|
namespace Company.Domain.RollCallAgg.DomainService;
|
||||||
|
|
||||||
@@ -26,7 +25,7 @@ public interface IRollCallDomainService
|
|||||||
long workshopId);
|
long workshopId);
|
||||||
|
|
||||||
TimeOnly GetEmployeeOffSetForRegularSettings(long employeeId, long workshopId);
|
TimeOnly GetEmployeeOffSetForRegularSettings(long employeeId, long workshopId);
|
||||||
DateTime GetEmployeeShiftDateByRollCallStartDate(long workshopId, long employeeId, DateTime rollCallStartDate, DateTime rollCallEndDate);
|
DateTime GetEmployeeShiftDateByRollCallStartDate(long workshopId, long employeeId, DateTime rollCallStartDate);
|
||||||
|
|
||||||
void CalculateTimeDifferences(RollCall rollCall);
|
void CalculateTimeDifferences(RollCall rollCall);
|
||||||
|
|
||||||
@@ -174,7 +173,7 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DateTime GetEmployeeShiftDateByRollCallStartDate(long workshopId, long employeeId,
|
public DateTime GetEmployeeShiftDateByRollCallStartDate(long workshopId, long employeeId,
|
||||||
DateTime rollCallStartDate, DateTime rollCallEndDate)
|
DateTime rollCallStartDate)
|
||||||
{
|
{
|
||||||
var shiftDetails = GetEmployeeShiftDetails(employeeId, workshopId);
|
var shiftDetails = GetEmployeeShiftDetails(employeeId, workshopId);
|
||||||
|
|
||||||
@@ -183,7 +182,7 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
return shiftDetails.shiftType switch
|
return shiftDetails.shiftType switch
|
||||||
{
|
{
|
||||||
WorkshopShiftStatus.Regular => CalculateRegularShiftDate(rollCallStartDate, offset),
|
WorkshopShiftStatus.Regular => CalculateRegularShiftDate(rollCallStartDate, offset),
|
||||||
WorkshopShiftStatus.Rotating => FindRotatingShift(rollCallStartDate, rollCallEndDate, shiftDetails.rotatingShifts).start.Date,
|
WorkshopShiftStatus.Rotating => rollCallStartDate.Date,
|
||||||
WorkshopShiftStatus.Irregular => rollCallStartDate.Date,
|
WorkshopShiftStatus.Irregular => rollCallStartDate.Date,
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
_ => throw new ArgumentOutOfRangeException()
|
||||||
};
|
};
|
||||||
@@ -217,7 +216,6 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
rollCalls.Remove(deletedRollCall);
|
rollCalls.Remove(deletedRollCall);
|
||||||
rollCalls.Add(rollCall);
|
rollCalls.Add(rollCall);
|
||||||
|
|
||||||
rollCall.ClearTimeDiff();
|
|
||||||
switch (shiftDetails.shiftType)
|
switch (shiftDetails.shiftType)
|
||||||
{
|
{
|
||||||
case WorkshopShiftStatus.Regular:
|
case WorkshopShiftStatus.Regular:
|
||||||
@@ -257,9 +255,8 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
var earlyEntryRollCall = rollCallsInShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate < employeeShift.start);
|
var earlyEntryRollCall = rollCallsInShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate < employeeShift.start);
|
||||||
|
|
||||||
var lateEntryRollCall = rollCallsInShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate > employeeShift.start);
|
var lateEntryRollCall = rollCallsInShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate > employeeShift.start);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var previousShift = employeeShifts.OrderByDescending(x => x.start)
|
var previousShift = employeeShifts.OrderByDescending(x => x.start)
|
||||||
.FirstOrDefault(x => x.end < employeeShift.start);
|
.FirstOrDefault(x => x.end < employeeShift.start);
|
||||||
@@ -302,6 +299,8 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
|
|
||||||
var lateExitRollCall = rollCallsInShift.OrderBy(x => x.EndDate).FirstOrDefault(x => x.EndDate > employeeShift.end);
|
var lateExitRollCall = rollCallsInShift.OrderBy(x => x.EndDate).FirstOrDefault(x => x.EndDate > employeeShift.end);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// تعجیل در خروج - زود رفتن
|
// تعجیل در خروج - زود رفتن
|
||||||
var nextShift = employeeShifts.OrderBy(x => x.start)
|
var nextShift = employeeShifts.OrderBy(x => x.start)
|
||||||
.FirstOrDefault(x => x.start > employeeShift.end);
|
.FirstOrDefault(x => x.start > employeeShift.end);
|
||||||
@@ -374,8 +373,8 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
var earlyEntryRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate < shift.start);
|
var earlyEntryRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate < shift.start);
|
||||||
|
|
||||||
var lateEntryRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate > shift.start);
|
var lateEntryRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.StartDate).FirstOrDefault(x => x.StartDate > shift.start);
|
||||||
earlyEntryRollCallRotating?.ClearTimeDiff();
|
|
||||||
lateEntryRollCallRotating?.ClearTimeDiff();
|
|
||||||
|
|
||||||
if (earlyEntryRollCallRotating != null)
|
if (earlyEntryRollCallRotating != null)
|
||||||
{
|
{
|
||||||
@@ -404,10 +403,9 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
var earlyExitRollCallRotating = rollCallsInRotatingShift.OrderByDescending(x => x.EndDate).FirstOrDefault(x => x.EndDate < shift.end);
|
var earlyExitRollCallRotating = rollCallsInRotatingShift.OrderByDescending(x => x.EndDate).FirstOrDefault(x => x.EndDate < shift.end);
|
||||||
|
|
||||||
var lateExitRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.EndDate).FirstOrDefault(x => x.EndDate > shift.end);
|
var lateExitRollCallRotating = rollCallsInRotatingShift.OrderBy(x => x.EndDate).FirstOrDefault(x => x.EndDate > shift.end);
|
||||||
earlyExitRollCallRotating?.ClearTimeDiff();
|
|
||||||
lateExitRollCallRotating?.ClearTimeDiff();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (earlyExitRollCallRotating != null && (rollCallsInRotatingShift.Any(x =>
|
if (earlyExitRollCallRotating != null && (rollCallsInRotatingShift.Any(x =>
|
||||||
x.StartDate < rotatingShiftEnd && x.StartDate > earlyExitRollCallRotating.EndDate) == false))
|
x.StartDate < rotatingShiftEnd && x.StartDate > earlyExitRollCallRotating.EndDate) == false))
|
||||||
@@ -455,10 +453,10 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
DateTime startEntryWithDate = startDate.Add(startRollCall.TimeOfDay);
|
DateTime startEntryWithDate = startDate.Add(startRollCall.TimeOfDay);
|
||||||
DateTime endEntryWithDate = endDate.Add(endRollCall.TimeOfDay);
|
DateTime endEntryWithDate = endDate.Add(endRollCall.TimeOfDay);
|
||||||
|
|
||||||
DateTime twoHourBeforeStart = startEntryWithDate.AddHours(-2);
|
DateTime oneHourBeforeStart = startEntryWithDate.AddHours(-1);
|
||||||
DateTime twoHourAfterStart = startEntryWithDate.AddHours(2);
|
DateTime oneHourAfterStart = startEntryWithDate.AddHours(1);
|
||||||
DateTime twoHourBeforeEnd = endEntryWithDate.AddHours(-2);
|
DateTime oneHourBeforeEnd = endEntryWithDate.AddHours(-1);
|
||||||
DateTime twoHourAfterEnd = endEntryWithDate.AddHours(2);
|
DateTime oneHourAfterEnd = endEntryWithDate.AddHours(1);
|
||||||
|
|
||||||
|
|
||||||
var shiftDateTimes = rotatingShifts.SelectMany(shift =>
|
var shiftDateTimes = rotatingShifts.SelectMany(shift =>
|
||||||
@@ -479,68 +477,56 @@ public class RollCallDomainService : IRollCallDomainService
|
|||||||
|
|
||||||
#region مقایسه شروع حضور غیاب با شیفت
|
#region مقایسه شروع حضور غیاب با شیفت
|
||||||
|
|
||||||
//var startFilteredTimes = shiftDateTimes.Where(shift =>
|
var startFilteredTimes = shiftDateTimes.Where(shift =>
|
||||||
// (twoHourBeforeStart <= shift.Start && twoHourAfterStart >= shift.Start) ||
|
(oneHourBeforeStart <= shift.Start && oneHourAfterStart >= shift.Start) ||
|
||||||
// (twoHourBeforeStart <= shift.End && twoHourAfterStart >= shift.End)).ToList();
|
(oneHourBeforeStart <= shift.End && oneHourAfterStart >= shift.End)).ToList();
|
||||||
|
|
||||||
//if (startFilteredTimes.Count == 0)
|
if (startFilteredTimes.Count == 0)
|
||||||
//{
|
{
|
||||||
// startFilteredTimes = shiftDateTimes;
|
startFilteredTimes = shiftDateTimes;
|
||||||
//}
|
}
|
||||||
//else if (startFilteredTimes.Count == 1)
|
else if (startFilteredTimes.Count == 1)
|
||||||
//{
|
{
|
||||||
// var startChosenShift = startFilteredTimes.First();
|
var startChosenShift = startFilteredTimes.First();
|
||||||
|
|
||||||
// if (startChosenShift.End < startChosenShift.Start)
|
if (startChosenShift.End < startChosenShift.Start)
|
||||||
// startChosenShift.End = startChosenShift.End.AddDays(1);
|
startChosenShift.End = startChosenShift.End.AddDays(1);
|
||||||
|
|
||||||
// return startChosenShift;
|
return startChosenShift;
|
||||||
//}
|
}
|
||||||
|
|
||||||
|
|
||||||
//#endregion
|
#endregion
|
||||||
|
|
||||||
//#region مقایسه پایان حضورغیاب با شیفت
|
#region مقایسه پایان حضورغیاب با شیفت
|
||||||
|
|
||||||
|
var endFilteredTimes = shiftDateTimes.Where(shift =>
|
||||||
|
(oneHourBeforeEnd <= shift.Start && oneHourAfterEnd >= shift.Start) ||
|
||||||
|
(oneHourBeforeEnd <= shift.End && oneHourAfterEnd >= shift.End)).ToList();
|
||||||
|
if (endFilteredTimes.Count == 0)
|
||||||
|
{
|
||||||
|
endFilteredTimes = startFilteredTimes;
|
||||||
|
}
|
||||||
|
else if (endFilteredTimes.Count == 1)
|
||||||
|
{
|
||||||
|
var endChosenShift = endFilteredTimes.First();
|
||||||
|
return endChosenShift;
|
||||||
|
}
|
||||||
|
|
||||||
//var endFilteredTimes = shiftDateTimes.Where(shift =>
|
|
||||||
// (twoHourBeforeEnd <= shift.Start && twoHourAfterEnd >= shift.Start) ||
|
|
||||||
// (twoHourBeforeEnd <= shift.End && twoHourAfterEnd >= shift.End)).ToList();
|
|
||||||
//if (endFilteredTimes.Count == 0)
|
|
||||||
//{
|
|
||||||
// endFilteredTimes = startFilteredTimes;
|
|
||||||
//}
|
|
||||||
//else if (endFilteredTimes.Count == 1)
|
|
||||||
//{
|
|
||||||
// var endChosenShift = endFilteredTimes.First();
|
|
||||||
// return endChosenShift;
|
|
||||||
//}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region اشتراک حضور غیاب و شیفت
|
#region اشتراک حضور غیاب و شیفت
|
||||||
|
|
||||||
var overlapShifts = shiftDateTimes
|
var overlapShifts = endFilteredTimes.Select(shift => new
|
||||||
.Select(shift => new
|
{
|
||||||
{
|
Shift = shift,
|
||||||
Shift = shift,
|
Overlap = new TimeSpan(Math.Max(0,
|
||||||
Overlap = new TimeSpan(Math.Max(0,
|
Math.Min(shift.End.Ticks, oneHourAfterEnd.Ticks) -
|
||||||
Math.Min(shift.End.Ticks, endRollCall.Ticks) -
|
Math.Max(shift.Start.Ticks, oneHourBeforeStart.Ticks)))
|
||||||
Math.Max(shift.Start.Ticks, startRollCall.Ticks))),
|
});
|
||||||
// زمان حضور فرد در شیفت (مجموع Overlap با شیفت)
|
|
||||||
TotalTimeInShift = new TimeSpan(Math.Max(0,
|
|
||||||
Math.Min(shift.End.Ticks, endRollCall.Ticks) -
|
|
||||||
Math.Max(shift.Start.Ticks, startRollCall.Ticks))),
|
|
||||||
StartDistance = Math.Abs((shift.Start - startRollCall).Ticks),
|
|
||||||
EndDistance = Math.Abs((shift.End - endRollCall).Ticks),
|
|
||||||
TotalDistance = Math.Abs((shift.Start - startRollCall).Ticks) + Math.Abs((shift.End - endRollCall).Ticks)
|
|
||||||
})
|
|
||||||
.OrderByDescending(s => s.TotalTimeInShift) // 1. بیشترین زمان حضور فرد
|
|
||||||
.ThenByDescending(s => s.Overlap) // 2. بیشترین Overlap
|
|
||||||
.ThenBy(s => s.TotalDistance)
|
|
||||||
.ThenBy(s => s.StartDistance)
|
|
||||||
.ThenBy(x => x.EndDistance); // 3. اگر برابر بود، Start نزدیکتر
|
|
||||||
|
|
||||||
var overlapChosenShift = overlapShifts.First();
|
var overlapChosenShift = overlapShifts.MaxBy(s => s.Overlap);
|
||||||
var end = overlapChosenShift.Shift.End;
|
var end = overlapChosenShift.Shift.End;
|
||||||
if (overlapChosenShift.Shift.End < overlapChosenShift.Shift.Start)
|
if (overlapChosenShift.Shift.End < overlapChosenShift.Shift.Start)
|
||||||
end = overlapChosenShift.Shift.End.AddDays(1);
|
end = overlapChosenShift.Shift.End.AddDays(1);
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
|
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
|
||||||
using CompanyManagment.App.Contracts.Contract;
|
using CompanyManagment.App.Contracts.Contract;
|
||||||
@@ -23,7 +22,4 @@ public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
|||||||
|
|
||||||
List<LateToWorkEarlyExistSpannig> LateToWorkEarlyExit(List<GroupedRollCalls> groupedRollCall,
|
List<LateToWorkEarlyExistSpannig> LateToWorkEarlyExit(List<GroupedRollCalls> groupedRollCall,
|
||||||
ICollection<CustomizeWorkshopEmployeeSettingsShift> shiftSettings, List<LeaveViewModel> leavList);
|
ICollection<CustomizeWorkshopEmployeeSettingsShift> shiftSettings, List<LeaveViewModel> leavList);
|
||||||
|
|
||||||
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
|
|
||||||
DateTime contractEnd, string shiftwork);
|
|
||||||
}
|
}
|
||||||
@@ -87,9 +87,6 @@ namespace Company.Domain.RollCallAgg
|
|||||||
long workshopId);
|
long workshopId);
|
||||||
|
|
||||||
Task<List<RollCall>> GetRollCallsInShiftDate(DateTime rollCallShiftDate, long employeeId, long workshopId);
|
Task<List<RollCall>> GetRollCallsInShiftDate(DateTime rollCallShiftDate, long employeeId, long workshopId);
|
||||||
|
|
||||||
Task<List<RollCall>> GetRollCallsUntilNowWithWorkshopIdEmployeeIds(long workshopId, List<long> employeeIds,
|
|
||||||
DateTime fromDate);
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ namespace Company.Domain.RollCallAgg
|
|||||||
Month = month;
|
Month = month;
|
||||||
RollCallModifyType = rollCallModifyType;
|
RollCallModifyType = rollCallModifyType;
|
||||||
|
|
||||||
|
SetShiftDate(service);
|
||||||
|
|
||||||
var shiftDetails = service.GetEmployeeShiftDetails(employeeId, workshopId);
|
var shiftDetails = service.GetEmployeeShiftDetails(employeeId, workshopId);
|
||||||
|
|
||||||
if (shiftDetails is { shiftType: WorkshopShiftStatus.Irregular, irregularShift: null } or
|
if (shiftDetails is { shiftType: WorkshopShiftStatus.Irregular, irregularShift: null } or
|
||||||
@@ -227,8 +229,6 @@ namespace Company.Domain.RollCallAgg
|
|||||||
{
|
{
|
||||||
EndDate = endDate;
|
EndDate = endDate;
|
||||||
|
|
||||||
SetShiftDate(service);
|
|
||||||
|
|
||||||
ShiftDurationTimeSpan = CalculateShiftDuration(StartDate!.Value, EndDate.Value, service);
|
ShiftDurationTimeSpan = CalculateShiftDuration(StartDate!.Value, EndDate.Value, service);
|
||||||
|
|
||||||
NightWorkTimeSpan = CalculateNightWorkDuration(StartDate.Value, endDate);
|
NightWorkTimeSpan = CalculateNightWorkDuration(StartDate.Value, endDate);
|
||||||
@@ -276,9 +276,9 @@ namespace Company.Domain.RollCallAgg
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetShiftDate(IRollCallDomainService service)
|
private void SetShiftDate(IRollCallDomainService service)
|
||||||
{
|
{
|
||||||
ShiftDate = service.GetEmployeeShiftDateByRollCallStartDate(WorkshopId, EmployeeId, StartDate!.Value,EndDate.Value);
|
ShiftDate = service.GetEmployeeShiftDateByRollCallStartDate(WorkshopId, EmployeeId, StartDate!.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private TimeSpan CalculateShiftDuration(DateTime startRollCall, DateTime endRollCall, IRollCallDomainService service)
|
private TimeSpan CalculateShiftDuration(DateTime startRollCall, DateTime endRollCall, IRollCallDomainService service)
|
||||||
|
|||||||
@@ -15,16 +15,14 @@ namespace Company.Domain.RollCallEmployeeStatusAgg
|
|||||||
///
|
///
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
void AdjustRollCallStatusEndDates(List<AdjustRollCallEmployeesWithEmployeeLeftWork> command);
|
void AdjustRollCallStatusEndDates(List<AdjustRollCallEmployeesWithEmployeeLeftWork> command);
|
||||||
|
/// <summary>
|
||||||
/// <summary>
|
/// دریافت وضعیت حضور غیاب پرسنل در تاریخ مشخص
|
||||||
/// دریافت وضعیت حضور غیاب پرسنل در تاریخ مشخص
|
/// </summary>
|
||||||
/// </summary>
|
/// <param name="rollCallEmployeeId"></param>
|
||||||
/// <param name="rollCallEmployeeId"></param>
|
/// <param name="date"></param>
|
||||||
/// <param name="date"></param>
|
/// <returns></returns>
|
||||||
/// <returns></returns>
|
|
||||||
RollCallEmployeeStatus GetByRollCallEmployeeIdAndDate(long rollCallEmployeeId, DateTime date);
|
RollCallEmployeeStatus GetByRollCallEmployeeIdAndDate(long rollCallEmployeeId, DateTime date);
|
||||||
List<RollCallEmployeeStatusViewModel> GetActiveByWorkshopIdInDate(long workshopId, DateTime startDateGr, DateTime endDateGr);
|
List<RollCallEmployeeStatusViewModel> GetActiveByWorkshopIdInDate(long workshopId, DateTime startDateGr, DateTime endDateGr);
|
||||||
List<RollCallEmployeeStatusViewModel> GetByWorkshopIdInDates(long workshopId, DateTime start, DateTime end);
|
List<RollCallEmployeeStatusViewModel> GetByWorkshopIdInDates(long workshopId, DateTime start, DateTime end);
|
||||||
bool IsActiveInPeriod(long employeeId, long workshopId, DateTime startDate, DateTime endDate);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.Reward;
|
|
||||||
using CompanyManagment.App.Contracts.SalaryAid;
|
using CompanyManagment.App.Contracts.SalaryAid;
|
||||||
|
|
||||||
namespace Company.Domain.SalaryAidAgg;
|
namespace Company.Domain.SalaryAidAgg;
|
||||||
@@ -12,13 +11,4 @@ public interface ISalaryAidRepository:IRepository<long,SalaryAid>
|
|||||||
void Remove(SalaryAid entity);
|
void Remove(SalaryAid entity);
|
||||||
List<SalaryAid> GetBy(IEnumerable<long> ids);
|
List<SalaryAid> GetBy(IEnumerable<long> ids);
|
||||||
void RemoveRange(IEnumerable<SalaryAid> salaryAids);
|
void RemoveRange(IEnumerable<SalaryAid> salaryAids);
|
||||||
|
|
||||||
#region Pooya
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
SalaryAidsGroupedViewModel GetSearchListAsGrouped(SalaryAidSearchViewModel searchModel);
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using Hangfire.Annotations;
|
using Hangfire.Annotations;
|
||||||
|
|
||||||
@@ -7,18 +6,15 @@ namespace Company.Domain.SalaryAidAgg;
|
|||||||
|
|
||||||
public class SalaryAid:EntityBase
|
public class SalaryAid:EntityBase
|
||||||
{
|
{
|
||||||
private SalaryAid()
|
private SalaryAid(){}
|
||||||
{
|
|
||||||
|
|
||||||
}
|
public SalaryAid(long employeeId, long workshopId, double amount, DateTime salaryAidDateTime)
|
||||||
public SalaryAid(long employeeId, long workshopId, double amount, DateTime salaryAidDateTime, long createdByAccountId, UserType createdByUserType)
|
|
||||||
{
|
{
|
||||||
EmployeeId = employeeId;
|
EmployeeId = employeeId;
|
||||||
WorkshopId = workshopId;
|
WorkshopId = workshopId;
|
||||||
Amount = amount;
|
Amount = amount;
|
||||||
SalaryAidDateTime = salaryAidDateTime;
|
SalaryAidDateTime = salaryAidDateTime;
|
||||||
CreatedByUserType = createdByUserType;
|
|
||||||
CreatedByAccountId = createdByAccountId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public long EmployeeId { get; private set; }
|
public long EmployeeId { get; private set; }
|
||||||
@@ -26,21 +22,9 @@ public class SalaryAid:EntityBase
|
|||||||
public double Amount { get; private set; }
|
public double Amount { get; private set; }
|
||||||
public DateTime SalaryAidDateTime { get; private set; }
|
public DateTime SalaryAidDateTime { get; private set; }
|
||||||
|
|
||||||
|
public void Edit(double amount, DateTime salaryAidTime)
|
||||||
public long CreatedByAccountId { get; private set; }
|
|
||||||
public UserType CreatedByUserType { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public long LastModifiedByAccountId { get; private set; }
|
|
||||||
public UserType LastModifiedByUserType { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
public void Edit(double amount, DateTime salaryAidTime, long modifiedByAccountId, UserType modifiedByUserType)
|
|
||||||
{
|
{
|
||||||
Amount = amount;
|
Amount = amount;
|
||||||
SalaryAidDateTime = salaryAidTime;
|
SalaryAidDateTime = salaryAidTime;
|
||||||
LastModifiedByAccountId = modifiedByAccountId;
|
|
||||||
LastModifiedByUserType = modifiedByUserType;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -91,10 +91,6 @@ public class ContractingPartyTemp : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Address { get; private set; }
|
public string Address { get; private set; }
|
||||||
|
|
||||||
public void UpdateAddress(string state, string city, string address)
|
|
||||||
{
|
|
||||||
this.State = state;
|
|
||||||
this.City = city;
|
|
||||||
this.Address = address;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -20,11 +20,4 @@ public interface IContractingPartyTempRepository :IRepository<long, ContractingP
|
|||||||
/// <param name="nationalCode"></param>
|
/// <param name="nationalCode"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
ContractingPartyTempViewModel GetByNationalCode(string nationalCode);
|
ContractingPartyTempViewModel GetByNationalCode(string nationalCode);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// دریافت اطلاعات طرف حساب موقت با کد ملی
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="nationalCode"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
ContractingPartyTempViewModel GetByContractingPartyTempId(long contractingPartyTempId);
|
|
||||||
}
|
}
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework_b.Domain;
|
|
||||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
|
||||||
|
|
||||||
namespace Company.Domain.TemporaryClientRegistrationAgg;
|
|
||||||
|
|
||||||
public interface IInstitutionContractTempRepository : IRepository<long, InstitutionContractTemp>
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// دریافت قرارداد موقت
|
|
||||||
/// با توجه به آیدی طرف حساب
|
|
||||||
/// یا آیدی قرارداد
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="id"></param>
|
|
||||||
/// <param name="contractingPartyId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<InstitutionContractTempViewModel> GetInstitutionContractTemp(long id,long contractingPartyTempId);
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
|
||||||
|
|
||||||
namespace Company.Domain.TemporaryClientRegistrationAgg;
|
|
||||||
|
|
||||||
public interface IWorkshopServicesTempRepository : IRepository<long, WorkshopServicesTemp>
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// حذف کامل سرویس های کارگاه
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopTempId"></param>
|
|
||||||
public void RemoveServices(long workshopTempId);
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
|
||||||
|
|
||||||
namespace Company.Domain.TemporaryClientRegistrationAgg;
|
|
||||||
|
|
||||||
public interface IWorkshopTempRepository : IRepository<long, WorkshopTemp>
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// دریافت کارگاه های ذخیره شده
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="contractingPartyTemp"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<WorkshopTempViewModel>> GetWorkshopTemp(long contractingPartyTemp);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application.UID;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
|
|
||||||
namespace Company.Domain.TemporaryClientRegistrationAgg;
|
|
||||||
|
|
||||||
public class InstitutionContractTemp : EntityBase
|
|
||||||
{
|
|
||||||
public InstitutionContractTemp(long contractingPartyTempId, string paymentModel, string periodModel, double totalPayment, DateTime contractStartGr, DateTime contractEndGr, string officialCompany, double valueAddedTax, string verifyCode, string registrationStatus, int messageId, DateTime? sendVerifyCodeTime, DateTime? verifyCodeEndTime)
|
|
||||||
{
|
|
||||||
ContractingPartyTempId = contractingPartyTempId;
|
|
||||||
PaymentModel = paymentModel;
|
|
||||||
PeriodModel = periodModel;
|
|
||||||
TotalPayment = totalPayment;
|
|
||||||
ContractStartGr = contractStartGr;
|
|
||||||
ContractEndGr = contractEndGr;
|
|
||||||
OfficialCompany = officialCompany;
|
|
||||||
ValueAddedTax = valueAddedTax;
|
|
||||||
VerifyCode = verifyCode;
|
|
||||||
RegistrationStatus = registrationStatus;
|
|
||||||
MessageId = messageId;
|
|
||||||
SendVerifyCodeTime = sendVerifyCodeTime;
|
|
||||||
VerifyCodeEndTime = verifyCodeEndTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// آیدی طرف حساب
|
|
||||||
/// </summary>
|
|
||||||
public long ContractingPartyTempId { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدل پرداخت
|
|
||||||
/// بصورت یکجا
|
|
||||||
/// -
|
|
||||||
/// بصئورت ماهیانه
|
|
||||||
/// </summary>
|
|
||||||
public string PaymentModel { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدت قرارداد
|
|
||||||
/// چند ماهه؟
|
|
||||||
/// </summary>
|
|
||||||
public string PeriodModel { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مبلغ کل قرارداد
|
|
||||||
/// </summary>
|
|
||||||
public double TotalPayment { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// تاریخ شرع قراداد
|
|
||||||
/// میلادی
|
|
||||||
/// </summary>
|
|
||||||
public DateTime ContractStartGr { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// تاریخ پایان قراداد شمسی
|
|
||||||
/// </summary>
|
|
||||||
public DateTime ContractEndGr { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// پرداخت بصورت رسمی با غیر رسمی
|
|
||||||
/// </summary>
|
|
||||||
public string OfficialCompany { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مبلغ مالیات بر ارزش افزوده
|
|
||||||
/// </summary>
|
|
||||||
public double ValueAddedTax { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// کد شش رقمی ثبت قرارداد
|
|
||||||
/// </summary>
|
|
||||||
public string VerifyCode { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// وضعیت ثبت نام
|
|
||||||
/// -
|
|
||||||
/// BeforeSendVerifyCode قبل از ارسال کد
|
|
||||||
/// -
|
|
||||||
/// VerifyCodeSent کد ارسال شده
|
|
||||||
/// -
|
|
||||||
/// Completed ثبت نام تکمیل شده
|
|
||||||
/// </summary>
|
|
||||||
public string RegistrationStatus { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// آی دی پیامک ارسال شده
|
|
||||||
/// </summary>
|
|
||||||
public int MessageId { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ثبت زمان ارسال کد
|
|
||||||
/// </summary>
|
|
||||||
public DateTime? SendVerifyCodeTime { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// زمان پایان مهلت ارسال کد
|
|
||||||
/// </summary>
|
|
||||||
public DateTime? VerifyCodeEndTime{ get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
public void Edit(long contractingPartyTempId, string paymentModel, string periodModel, double totalPayment, DateTime contractStartGr, DateTime contractEndGr, string officialCompany, double valueAddedTax, string verifyCode, string registrationStatus, int messageId, DateTime? sendVerifyCodeTime, DateTime? verifyCodeEndTime)
|
|
||||||
{
|
|
||||||
ContractingPartyTempId = contractingPartyTempId;
|
|
||||||
PaymentModel = paymentModel;
|
|
||||||
PeriodModel = periodModel;
|
|
||||||
TotalPayment = totalPayment;
|
|
||||||
ContractStartGr = contractStartGr;
|
|
||||||
ContractEndGr = contractEndGr;
|
|
||||||
OfficialCompany = officialCompany;
|
|
||||||
ValueAddedTax = valueAddedTax;
|
|
||||||
VerifyCode = verifyCode;
|
|
||||||
RegistrationStatus = registrationStatus;
|
|
||||||
MessageId = messageId;
|
|
||||||
SendVerifyCodeTime = sendVerifyCodeTime;
|
|
||||||
VerifyCodeEndTime = verifyCodeEndTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update(string verifyCode, string registrationStatus, int messageId, DateTime? sendVerifyCodeTime, DateTime? verifyCodeEndTime)
|
|
||||||
{
|
|
||||||
VerifyCode = verifyCode;
|
|
||||||
RegistrationStatus = registrationStatus;
|
|
||||||
MessageId = messageId;
|
|
||||||
SendVerifyCodeTime = sendVerifyCodeTime;
|
|
||||||
VerifyCodeEndTime = verifyCodeEndTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
using _0_Framework.Domain;
|
|
||||||
|
|
||||||
namespace Company.Domain.TemporaryClientRegistrationAgg;
|
|
||||||
|
|
||||||
public class WorkshopServicesTemp : EntityBase
|
|
||||||
{
|
|
||||||
public WorkshopServicesTemp(string serviceName, int countPerson, long workshopTempId)
|
|
||||||
{
|
|
||||||
ServiceName = serviceName;
|
|
||||||
CountPerson = countPerson;
|
|
||||||
WorkshopTempId = workshopTempId;
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// نام سرویس
|
|
||||||
/// </summary>
|
|
||||||
public string ServiceName { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// تعداد پرسنل
|
|
||||||
/// </summary>
|
|
||||||
public int CountPerson { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// آی دی کارگاه موقت
|
|
||||||
/// </summary>
|
|
||||||
public long WorkshopTempId { get; private set; }
|
|
||||||
|
|
||||||
public WorkshopTemp WorkshopTemp { get; private set; }
|
|
||||||
|
|
||||||
public void UpdateService(int countPerson)
|
|
||||||
{
|
|
||||||
this.CountPerson = countPerson;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
|
|
||||||
namespace Company.Domain.TemporaryClientRegistrationAgg;
|
|
||||||
|
|
||||||
public class WorkshopTemp : EntityBase
|
|
||||||
{
|
|
||||||
public WorkshopTemp(string workshopName, int countPerson, long contractingPartyTempId, double workshopServicesAmount)
|
|
||||||
{
|
|
||||||
WorkshopName = workshopName;
|
|
||||||
CountPerson = countPerson;
|
|
||||||
ContractingPartyTempId = contractingPartyTempId;
|
|
||||||
WorkshopServicesAmount = workshopServicesAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// نام کارگاه
|
|
||||||
/// </summary>
|
|
||||||
public string WorkshopName { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// تعداد پرسنل
|
|
||||||
/// </summary>
|
|
||||||
public int CountPerson { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ای دی طرف حساب
|
|
||||||
/// </summary>
|
|
||||||
public long ContractingPartyTempId { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// جمع کل مبالغ سرویس ها برای کارگاه
|
|
||||||
/// </summary>
|
|
||||||
public double WorkshopServicesAmount { get; private set; }
|
|
||||||
|
|
||||||
public List<WorkshopServicesTemp> WorkshopServicesTemps { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void Edit(string workshopName, int countPerson, double workshopServicesAmount)
|
|
||||||
{
|
|
||||||
this.WorkshopName = workshopName;
|
|
||||||
this.CountPerson = countPerson;
|
|
||||||
this.WorkshopServicesAmount = workshopServicesAmount;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -11,10 +11,6 @@ namespace Company.Domain.YearlySalaryAgg;
|
|||||||
|
|
||||||
public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
|
public interface IYearlySalaryRepository : IRepository<long, YearlySalary>
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// تست محاسبه مزد پایه
|
|
||||||
/// </summary>
|
|
||||||
void TestDayliFeeCompute();
|
|
||||||
List<string> GetYears();
|
List<string> GetYears();
|
||||||
List<YearlySalaryViewModel> GetYearlySalary();
|
List<YearlySalaryViewModel> GetYearlySalary();
|
||||||
MontlywageBunosYearsViewModel GetMontlyBunosYears(TimeSpan weeklyTime, DateTime contractStart,DateTime contractEnd, double daylyWage, string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking);
|
MontlywageBunosYearsViewModel GetMontlyBunosYears(TimeSpan weeklyTime, DateTime contractStart,DateTime contractEnd, double daylyWage, string weeklyWorkingTime, int officialholiday, int friday, string totalHoursH, string totalHorsM, string basic, int fridayStartToEnd, double dayliFeeComplete, bool hasRollCall, bool holidaysWorking);
|
||||||
|
|||||||
@@ -1,179 +0,0 @@
|
|||||||
using CompanyManagement.Infrastructure.Excel.EmployeeBankInfo;
|
|
||||||
using OfficeOpenXml.Style;
|
|
||||||
using OfficeOpenXml;
|
|
||||||
using System.Drawing;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
|
|
||||||
namespace CompanyManagement.Infrastructure.Excel.CWS;
|
|
||||||
public class CustomizeWorkshopGroupExcelViewModel
|
|
||||||
{
|
|
||||||
public string Name { get; set; }
|
|
||||||
public string ShiftType { get; set; }
|
|
||||||
public string Shifts { get; set; }
|
|
||||||
public string Salary { get; set; }
|
|
||||||
public List<CustomizeWorkshopEmployeeExcelViewModel> EmployeeSettings { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class CustomizeWorkshopEmployeeExcelViewModel
|
|
||||||
{
|
|
||||||
public string Name { get; set; }
|
|
||||||
public string ShiftType { get; set; }
|
|
||||||
public string Shifts { get; set; }
|
|
||||||
public int LeavePermitted { get; set; }
|
|
||||||
public string Salary { get; set; }
|
|
||||||
}
|
|
||||||
public class CustomizeWorkshopGroupSettingExcelGenerator
|
|
||||||
{
|
|
||||||
public static byte[] Generate(List<CustomizeWorkshopGroupExcelViewModel> groups)
|
|
||||||
{
|
|
||||||
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
||||||
using (var package = new ExcelPackage())
|
|
||||||
{
|
|
||||||
var worksheet = package.Workbook.Worksheets.Add("GroupsAndEmployees");
|
|
||||||
|
|
||||||
// Headers
|
|
||||||
worksheet.Cells[1, 1].Value = "نام گروه";
|
|
||||||
worksheet.Cells[1, 2].Value = "نوع شیفت گروه";
|
|
||||||
worksheet.Cells[1, 3].Value = "شیفت گروه";
|
|
||||||
worksheet.Cells[1, 4].Value = "حقوق گروه";
|
|
||||||
|
|
||||||
worksheet.Cells[1, 5].Value = "نام پرسنل";
|
|
||||||
worksheet.Cells[1, 6].Value = "مجاز مرخصی پرسنل";
|
|
||||||
worksheet.Cells[1, 7].Value = "نوع شیفت پرسنل";
|
|
||||||
worksheet.Cells[1, 8].Value = "شیفت پرسنل";
|
|
||||||
worksheet.Cells[1, 9].Value = "حقوق پرسنل";
|
|
||||||
|
|
||||||
using (var range = worksheet.Cells[1, 1, 1, 9])
|
|
||||||
{
|
|
||||||
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
|
||||||
range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
|
||||||
range.Style.Font.Bold = true;
|
|
||||||
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
|
||||||
range.Style.Fill.BackgroundColor.SetColor(Color.LightGray); // رنگ پس زمینه خاکستری
|
|
||||||
|
|
||||||
range.Style.Border.BorderAround(ExcelBorderStyle.Thin);
|
|
||||||
}
|
|
||||||
|
|
||||||
int row = 2;
|
|
||||||
|
|
||||||
foreach (var group in groups)
|
|
||||||
{
|
|
||||||
var employees = group.EmployeeSettings ?? new List<CustomizeWorkshopEmployeeExcelViewModel>();
|
|
||||||
int groupStartRow = row;
|
|
||||||
int groupEndRow = employees.Count > 0 ? (row + employees.Count - 1) : row;
|
|
||||||
|
|
||||||
if (employees.Count == 0)
|
|
||||||
{
|
|
||||||
// گروه بدون پرسنل
|
|
||||||
worksheet.Cells[row, 1].Value = group.Name;
|
|
||||||
worksheet.Cells[row, 2].Value = group.ShiftType;
|
|
||||||
worksheet.Cells[row, 3].Value = group.Shifts;
|
|
||||||
worksheet.Cells[row, 4].Value = Convert.ToInt32(group.Salary);
|
|
||||||
|
|
||||||
ApplyGroupStyle(worksheet, row, row);
|
|
||||||
worksheet.Cells[row, 4].Style.Numberformat.Format = "#,##0";
|
|
||||||
using (var thickBorderRange = worksheet.Cells[groupEndRow, 1, groupEndRow, 9])
|
|
||||||
{
|
|
||||||
thickBorderRange.Style.Border.Bottom.Style = ExcelBorderStyle.Thick;
|
|
||||||
}
|
|
||||||
row++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
foreach (var employee in employees)
|
|
||||||
{
|
|
||||||
worksheet.Cells[row, 5].Value = employee.Name;
|
|
||||||
worksheet.Cells[row, 6].Value = employee.LeavePermitted;
|
|
||||||
worksheet.Cells[row, 7].Value = employee.ShiftType;
|
|
||||||
worksheet.Cells[row, 8].Value = employee.Shifts;
|
|
||||||
worksheet.Cells[row, 9].Value = Convert.ToInt32(employee.Salary);
|
|
||||||
|
|
||||||
ApplyEmployeeStyle(worksheet, row);
|
|
||||||
worksheet.Cells[row, 9].Style.Numberformat.Format = "#,##0";
|
|
||||||
row++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Merge اطلاعات گروه برای تمام پرسنل
|
|
||||||
worksheet.Cells[groupStartRow, 1, groupEndRow, 1].Merge = true;
|
|
||||||
worksheet.Cells[groupStartRow, 1].Value = group.Name;
|
|
||||||
|
|
||||||
worksheet.Cells[groupStartRow, 2, groupEndRow, 2].Merge = true;
|
|
||||||
worksheet.Cells[groupStartRow, 2].Value = group.ShiftType;
|
|
||||||
|
|
||||||
worksheet.Cells[groupStartRow, 3, groupEndRow, 3].Merge = true;
|
|
||||||
worksheet.Cells[groupStartRow, 3].Value = group.Shifts;
|
|
||||||
|
|
||||||
worksheet.Cells[groupStartRow, 4, groupEndRow, 4].Merge = true;
|
|
||||||
worksheet.Cells[groupStartRow, 4].Value = Convert.ToInt32(group.Salary);
|
|
||||||
|
|
||||||
ApplyGroupStyle(worksheet, groupStartRow, groupEndRow);
|
|
||||||
|
|
||||||
worksheet.Cells[groupStartRow, 4, groupEndRow, 4].Style.Numberformat.Format = "#,##0";
|
|
||||||
|
|
||||||
|
|
||||||
worksheet.Cells[groupEndRow, 1, groupEndRow, 9].Style.Border.Bottom.Style = ExcelBorderStyle.Thick;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
|
|
||||||
|
|
||||||
for (int i = 2; i <= worksheet.Dimension.Rows; i++)
|
|
||||||
{
|
|
||||||
worksheet.Row(i).Height = 50;
|
|
||||||
}
|
|
||||||
|
|
||||||
int groupShiftCol = 3;
|
|
||||||
int employeeShiftCol = 8;
|
|
||||||
int groupSalary = 4;
|
|
||||||
int employeeSalary = 9;
|
|
||||||
int employeeName =5;
|
|
||||||
worksheet.Columns[groupShiftCol].Width = 15;
|
|
||||||
worksheet.Columns[employeeShiftCol].Width = 15;
|
|
||||||
worksheet.Columns[groupSalary].Width = 16;
|
|
||||||
worksheet.Columns[employeeSalary].Width = 16;
|
|
||||||
worksheet.Columns[employeeName].Width = 24;
|
|
||||||
worksheet.View.RightToLeft = true; // فارسی
|
|
||||||
return package.GetAsByteArray();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void ApplyEmployeeStyle(ExcelWorksheet worksheet, int row)
|
|
||||||
{
|
|
||||||
using (var range = worksheet.Cells[row, 5, row, 9])
|
|
||||||
{
|
|
||||||
//range.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
|
||||||
//range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(198, 239, 206)); // سبز خیلی روشن
|
|
||||||
range.Style.Border.BorderAround(ExcelBorderStyle.Thin);
|
|
||||||
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
|
||||||
range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
|
||||||
|
|
||||||
// اضافه کردن بوردر به همهی سلولهای ردیف پرسنل
|
|
||||||
range.Style.Border.Top.Style = ExcelBorderStyle.Thin;
|
|
||||||
range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
|
|
||||||
range.Style.Border.Left.Style = ExcelBorderStyle.Thin;
|
|
||||||
range.Style.Border.Right.Style = ExcelBorderStyle.Thin;
|
|
||||||
|
|
||||||
range.Style.WrapText = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void ApplyGroupStyle(ExcelWorksheet worksheet, int startRow, int endRow)
|
|
||||||
{
|
|
||||||
using (var range = worksheet.Cells[startRow, 1, endRow, 4])
|
|
||||||
{
|
|
||||||
//range.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
|
||||||
//range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 255, 204)); // زرد خیلی روشن
|
|
||||||
range.Style.Border.BorderAround(ExcelBorderStyle.Thin);
|
|
||||||
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
|
||||||
range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
|
||||||
|
|
||||||
// اضافه کردن بوردر به همهی سلولهای گروه
|
|
||||||
range.Style.Border.Top.Style = ExcelBorderStyle.Thin;
|
|
||||||
range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
|
|
||||||
range.Style.Border.Left.Style = ExcelBorderStyle.Thin;
|
|
||||||
range.Style.Border.Right.Style = ExcelBorderStyle.Thin;
|
|
||||||
|
|
||||||
range.Style.WrapText = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
using System.Drawing;
|
|
||||||
using OfficeOpenXml.Style;
|
|
||||||
using OfficeOpenXml;
|
|
||||||
using CompanyManagement.Infrastructure.Excel.Checkout;
|
|
||||||
using CompanyManagment.App.Contracts.File1;
|
|
||||||
using Microsoft.AspNetCore.Server.HttpSys;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
|
|
||||||
namespace CompanyManagement.Infrastructure.Excel.CaseManagement;
|
|
||||||
|
|
||||||
public class CaseManagementExcelGenerator
|
|
||||||
{
|
|
||||||
public static Dictionary<string, string> Header { get; set; } = new()
|
|
||||||
{
|
|
||||||
{"ArchiveNumber","شماره بایگانی"},
|
|
||||||
{"FileClass","کلاسه پرونده"},
|
|
||||||
{"Client","موکل"},
|
|
||||||
{"LitigationParty","طرف دعوی"},
|
|
||||||
{"DiagnosisPetitionTotalPenalty","مبلغ دادنامه تشخیص"},
|
|
||||||
{"DisputeResolutionTotalPenalty","مبلغ دادنامه حل اختلاف"},
|
|
||||||
{"MclsUsername","نام کاربری"},
|
|
||||||
{"MclsPassword","رمز عبور"},
|
|
||||||
|
|
||||||
};
|
|
||||||
public static byte[] GenerateCheckoutTempExcelInfo(List<FileExcelViewModel> data)
|
|
||||||
{
|
|
||||||
OfficeOpenXml.ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
|
||||||
using var package = new ExcelPackage();
|
|
||||||
CreateSheet(data, package,"همه");
|
|
||||||
CreateSheet(data.Where(x=>x.Status ==2).ToList(), package,"فعال");
|
|
||||||
CreateSheet(data.Where(x=>x.Status == 1).ToList(), package,"غیرفعال");
|
|
||||||
CreateSheet(data.Where(x=>x.Status == 3).ToList(), package,"خروج موقت");
|
|
||||||
|
|
||||||
return package.GetAsByteArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void CreateSheet(List<FileExcelViewModel> data, ExcelPackage package,string sheetName)
|
|
||||||
{
|
|
||||||
var worksheet = package.Workbook.Worksheets.Add(sheetName);
|
|
||||||
|
|
||||||
var indexCell = worksheet.Cells[1, 1];
|
|
||||||
indexCell.Value = "ردیف";
|
|
||||||
ApplyHeaderStyle(indexCell);
|
|
||||||
|
|
||||||
for (int i = 0; i < Header.Count; i++)
|
|
||||||
{
|
|
||||||
worksheet.Cells[1, i + 2].Value = Header.ElementAt(i).Value;
|
|
||||||
ApplyHeaderStyle(worksheet.Cells[1, i + 2]);
|
|
||||||
}
|
|
||||||
var dataRow = 2;
|
|
||||||
foreach (var item in data)
|
|
||||||
{
|
|
||||||
var column = 2;
|
|
||||||
foreach (var header in Header)
|
|
||||||
{
|
|
||||||
var property = item.GetType().GetProperty(header.Key);
|
|
||||||
var value = property.GetValue(item, null)?.ToString();
|
|
||||||
|
|
||||||
var cell = worksheet.Cells[dataRow, column];
|
|
||||||
|
|
||||||
// Check if the property requires MoneyToDouble()
|
|
||||||
|
|
||||||
if (RequiresMoneyToDouble(property.Name))
|
|
||||||
{
|
|
||||||
cell.Value = MoneyToDouble(value);
|
|
||||||
cell.Style.Numberformat.Format = "#,##0";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cell.Value = value;
|
|
||||||
}
|
|
||||||
ApplyGeneralDataStyle(worksheet.Cells[dataRow, column]);
|
|
||||||
switch (item.Status)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.Gray);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
cell.Style.Fill.BackgroundColor.SetColor(Color.White);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
cell.Style.Fill.BackgroundColor.SetColor(Color.Orange);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
column++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var rowCounter = worksheet.Cells[dataRow, 1];
|
|
||||||
rowCounter.Value = dataRow - 1;
|
|
||||||
|
|
||||||
dataRow++;
|
|
||||||
}
|
|
||||||
|
|
||||||
worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
|
|
||||||
worksheet.View.RightToLeft = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool RequiresMoneyToDouble(string propertyName)
|
|
||||||
{
|
|
||||||
var propertiesRequiringConversion = new HashSet<string>
|
|
||||||
{
|
|
||||||
"DiagnosisPetitionTotalPenalty", "DisputeResolutionTotalPenalty"
|
|
||||||
};
|
|
||||||
return propertiesRequiringConversion.Contains(propertyName);
|
|
||||||
}
|
|
||||||
private static double MoneyToDouble(string value)
|
|
||||||
{
|
|
||||||
Console.WriteLine(value);
|
|
||||||
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 void ApplyHeaderStyle(ExcelRange cell)
|
|
||||||
{
|
|
||||||
cell.Style.Font.Bold = true;
|
|
||||||
cell.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
|
||||||
cell.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray);
|
|
||||||
cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
|
||||||
cell.Style.Border.BorderAround(ExcelBorderStyle.Thin);
|
|
||||||
}
|
|
||||||
private static void ApplyGeneralDataStyle(ExcelRange cell)
|
|
||||||
{
|
|
||||||
cell.Style.Border.BorderAround(ExcelBorderStyle.Thin);
|
|
||||||
cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
|
||||||
cell.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
|
||||||
cell.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -13,8 +13,5 @@
|
|||||||
<ProjectReference Include="..\AccountMangement.Infrastructure.EFCore\AccountMangement.Infrastructure.EFCore.csproj" />
|
<ProjectReference Include="..\AccountMangement.Infrastructure.EFCore\AccountMangement.Infrastructure.EFCore.csproj" />
|
||||||
<ProjectReference Include="..\CompanyManagment.EFCore\CompanyManagment.EFCore.csproj" />
|
<ProjectReference Include="..\CompanyManagment.EFCore\CompanyManagment.EFCore.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="CaseManagement\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Application;
|
using _0_Framework_b.Application;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Board;
|
namespace CompanyManagment.App.Contracts.Board;
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,4 @@ public class MainViewModel
|
|||||||
{
|
{
|
||||||
public List<CheckoutViewModel> MainList { get; set; }
|
public List<CheckoutViewModel> MainList { get; set; }
|
||||||
public string WorkshopSearch { get; set; }
|
public string WorkshopSearch { get; set; }
|
||||||
|
|
||||||
public bool IsSysManager { get; set; }
|
|
||||||
}
|
}
|
||||||
@@ -36,12 +36,8 @@ public class ComputingViewModel
|
|||||||
public string MarriedAllowance { get; set; }
|
public string MarriedAllowance { get; set; }
|
||||||
public string RotatingShiftValue { get; set; }
|
public string RotatingShiftValue { get; set; }
|
||||||
public List<RotatingShiftViewModel> RotatingResultList { get; set; }
|
public List<RotatingShiftViewModel> RotatingResultList { get; set; }
|
||||||
public bool HasRollCall { get; set; }
|
|
||||||
|
|
||||||
public string EmployeeFullName { get; set; }
|
|
||||||
public string YearAndMonth { get; set; }
|
|
||||||
|
|
||||||
public bool HasRotatingShift { get; set; }
|
|
||||||
|
|
||||||
//public List<string> holidays;
|
//public List<string> holidays;
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Security.AccessControl;
|
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Base;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
|
||||||
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
|
||||||
using CompanyManagment.App.Contracts.File1;
|
using CompanyManagment.App.Contracts.File1;
|
||||||
using CompanyManagment.App.Contracts.Fine;
|
using CompanyManagment.App.Contracts.Fine;
|
||||||
using CompanyManagment.App.Contracts.Loan;
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
@@ -17,13 +12,10 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout;
|
|||||||
|
|
||||||
public class CustomizeCheckoutMandatoryViewModel
|
public class CustomizeCheckoutMandatoryViewModel
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// حقوق ماهانه
|
||||||
|
/// </summary>
|
||||||
/// <summary>
|
public double MonthlySalary { get; set; }
|
||||||
/// حقوق ماهانه
|
|
||||||
/// </summary>
|
|
||||||
public double MonthlySalary { get; set; }
|
|
||||||
|
|
||||||
|
|
||||||
#region Payments
|
#region Payments
|
||||||
@@ -113,8 +105,6 @@ public class CustomizeCheckoutMandatoryViewModel
|
|||||||
public double EarlyExitDeduction { get; set; }
|
public double EarlyExitDeduction { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مساعده
|
/// مساعده
|
||||||
@@ -140,7 +130,6 @@ public class CustomizeCheckoutMandatoryViewModel
|
|||||||
#region Values
|
#region Values
|
||||||
public TimeSpan LateToWorkValue { get; set; }
|
public TimeSpan LateToWorkValue { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد روزهای کارکرد
|
/// تعداد روزهای کارکرد
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -152,14 +141,14 @@ public class CustomizeCheckoutMandatoryViewModel
|
|||||||
/// مجموع مطالبات
|
/// مجموع مطالبات
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double TotalClaimsDouble => MonthlySalary + FridayPay + OverTimePay + BaseYearsPay + BonusesPay + NightWorkPay +
|
public double TotalClaimsDouble => MonthlySalary + FridayPay + OverTimePay + BaseYearsPay + BonusesPay + NightWorkPay +
|
||||||
MarriedAllowance + ShiftPay + FamilyAllowance + LeavePay + RewardPay;
|
MarriedAllowance + ShiftPay + FamilyAllowance + LeavePay + RewardPay;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مجموع کسورات
|
/// مجموع کسورات
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double TotalDeductionsDouble => FineAbsenceDeduction + InsuranceDeduction + LateToWorkDeduction +
|
public double TotalDeductionsDouble => FineAbsenceDeduction + InsuranceDeduction + LateToWorkDeduction +
|
||||||
EarlyExitDeduction + SalaryAidDeduction + InstallmentDeduction +
|
EarlyExitDeduction + SalaryAidDeduction + InstallmentDeduction +
|
||||||
FineDeduction + TaxDeduction;
|
FineDeduction + TaxDeduction;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// مجموع مطالبات
|
/// مجموع مطالبات
|
||||||
@@ -174,7 +163,7 @@ public class CustomizeCheckoutMandatoryViewModel
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// مجموع پرداختی
|
/// مجموع پرداختی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double TotalPayment => Math.Truncate(TotalClaimsDouble - TotalDeductionsDouble);
|
public double TotalPayment => TotalClaimsDouble - TotalDeductionsDouble;
|
||||||
|
|
||||||
#region Employee Information
|
#region Employee Information
|
||||||
|
|
||||||
@@ -193,20 +182,10 @@ public class CustomizeCheckoutMandatoryViewModel
|
|||||||
public int Year { get; set; }
|
public int Year { get; set; }
|
||||||
public int Month { get; set; }
|
public int Month { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
public List<FineViewModel> FineViewModels { get; set; }
|
|
||||||
public List<RewardViewModel> RewardViewModels { get; set; }
|
|
||||||
public List<LoanInstallmentViewModel> InstallmentViewModels{ get; set; }
|
|
||||||
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
|
|
||||||
|
|
||||||
public double SettingSalary { get; set; }
|
public List<FineViewModel> FineViewModels { get; set; } = [];
|
||||||
public double DailyWage { get; set; }
|
public List<RewardViewModel> RewardViewModels { get; set; } = [];
|
||||||
|
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; } = [];
|
||||||
public WorkshopShiftStatus ShiftStatus { get; set; }
|
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; } = [];
|
||||||
|
|
||||||
public IrregularShift IrregularShift { get; set; }
|
|
||||||
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; } = [];
|
|
||||||
|
|
||||||
public ICollection<CustomizeSifts> EmployeeSettingsShifts { get; set; } = [];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,6 @@
|
|||||||
using CompanyManagment.App.Contracts.RollCall;
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Runtime;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Base;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
|
||||||
using CompanyManagment.App.Contracts.Fine;
|
using CompanyManagment.App.Contracts.Fine;
|
||||||
using CompanyManagment.App.Contracts.Loan;
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
using CompanyManagment.App.Contracts.Reward;
|
using CompanyManagment.App.Contracts.Reward;
|
||||||
@@ -71,7 +66,7 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout
|
|||||||
public string LeavePay { get; set; }
|
public string LeavePay { get; set; }
|
||||||
public string RewardPay { get; set; }
|
public string RewardPay { get; set; }
|
||||||
|
|
||||||
public bool IsBirthday { get; set; } = true;
|
|
||||||
public string FineDeduction { get; set; }
|
public string FineDeduction { get; set; }
|
||||||
public string InsuranceDeduction { get; set; }
|
public string InsuranceDeduction { get; set; }
|
||||||
public string TaxDeducation { get; set; }
|
public string TaxDeducation { get; set; }
|
||||||
@@ -91,32 +86,24 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout
|
|||||||
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
|
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
|
||||||
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
|
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
|
||||||
public bool TotalPaymentHide { get; set; }
|
public bool TotalPaymentHide { get; set; }
|
||||||
public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; }
|
|
||||||
public double TotalPaymentD { get; set; }
|
public double TotalPaymentD { get; set; }
|
||||||
|
|
||||||
public string TotalLateToWorkDeduction { get; set; }
|
public PersonnelCheckoutDailyRollCallViewModel MonthlyRollCall { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public string TotalLateToWorkDeduction { get; set; }
|
||||||
|
|
||||||
public string LateToWorkValue { get; set; }
|
public string LateToWorkValue { get; set; }
|
||||||
|
|
||||||
public string SettingSalary { get; set; }
|
//public bool HasLeft { get; set; }
|
||||||
public string DailyWage { get; set; }
|
//public string IsBlockCantracingParty { get; set; }
|
||||||
public WorkshopShiftStatus ShiftStatus { get; set; }
|
//public string IsActiveString { get; set; }
|
||||||
|
//public long WorkingHoursId { get; set; }
|
||||||
|
//public string ArchiveCode { get; set; }
|
||||||
|
//public string ConsumableItems { get; set; }
|
||||||
|
//public string HousingAllowance { get; set; }
|
||||||
|
//public string YearsPay { get; set; }
|
||||||
|
|
||||||
public string EmployeePicture { get; set; }
|
}
|
||||||
|
|
||||||
|
|
||||||
public IrregularShift IrregularShift { get; set; }
|
|
||||||
public List<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
|
|
||||||
public List<CustomizeSifts> RegularShift { get; set; }
|
|
||||||
|
|
||||||
//public bool HasLeft { get; set; }
|
|
||||||
//public string IsBlockCantracingParty { get; set; }
|
|
||||||
//public string IsActiveString { get; set; }
|
|
||||||
//public long WorkingHoursId { get; set; }
|
|
||||||
//public string ArchiveCode { get; set; }
|
|
||||||
//public string ConsumableItems { get; set; }
|
|
||||||
//public string HousingAllowance { get; set; }
|
|
||||||
//public string YearsPay { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,7 @@ namespace CompanyManagment.App.Contracts.CustomizeCheckout
|
|||||||
{
|
{
|
||||||
public interface ICustomizeCheckoutApplication
|
public interface ICustomizeCheckoutApplication
|
||||||
{
|
{
|
||||||
List<CustomizeCheckoutViewModel> Search(SearchCustomizeCheckout searchModel);
|
public List<CustomizeCheckoutViewModel> Search(SearchCustomizeCheckout searchModel);
|
||||||
|
|
||||||
OperationResult<List<EligibleEmployeesForCustomizeCheckoutViewModel>>
|
OperationResult<List<EligibleEmployeesForCustomizeCheckoutViewModel>>
|
||||||
GetWorkshopEmployeesEligibleForCheckoutInDates(long workshopId, int yearFa, int monthFa);
|
GetWorkshopEmployeesEligibleForCheckoutInDates(long workshopId, int yearFa, int monthFa);
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ public class SearchCustomizeCheckout
|
|||||||
{
|
{
|
||||||
|
|
||||||
public long WorkshopId { get; set; }
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int Month { get; set; }
|
public int Month { get; set; }
|
||||||
public int Year { get; set; }
|
public int Year { get; set; }
|
||||||
|
|
||||||
@@ -12,7 +14,6 @@ public class SearchCustomizeCheckout
|
|||||||
public string SearchEndFa { get; set; }
|
public string SearchEndFa { get; set; }
|
||||||
|
|
||||||
public long EmployeeId { get; set; }
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
public long BankId { get; set; }
|
public long BankId { get; set; }
|
||||||
|
|
||||||
public CustomizeCheckoutOrderByEnum OrderBy { get; set; } = CustomizeCheckoutOrderByEnum.ContractStartDesc;
|
public CustomizeCheckoutOrderByEnum OrderBy { get; set; } = CustomizeCheckoutOrderByEnum.ContractStartDesc;
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
||||||
@@ -10,6 +9,4 @@ public class CustomizeWorkshopSettingsViewModel
|
|||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public WorkshopShiftStatus WorkshopShiftStatus { get; set; }
|
public WorkshopShiftStatus WorkshopShiftStatus { get; set; }
|
||||||
public List<CustomizeWorkshopGroupSettingsViewModel> GroupSettings { get; set; }
|
public List<CustomizeWorkshopGroupSettingsViewModel> GroupSettings { get; set; }
|
||||||
public TimeOnly Offset { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,10 +2,8 @@
|
|||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
||||||
using CompanyManagment.App.Contracts.Employee;
|
using CompanyManagment.App.Contracts.Employee;
|
||||||
using CompanyManagment.App.Contracts.RollCall;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
||||||
|
|
||||||
@@ -36,8 +34,7 @@ public interface ICustomizeWorkshopSettingsApplication
|
|||||||
OperationResult EditSimpleRollCallGroupSetting(EditCustomizeWorkshopGroupSettings command);
|
OperationResult EditSimpleRollCallGroupSetting(EditCustomizeWorkshopGroupSettings command);
|
||||||
|
|
||||||
#region Vafa
|
#region Vafa
|
||||||
OperationResult EditSimpleRollCallEmployeeSetting(EditCustomizeEmployeeSettings command,
|
OperationResult EditSimpleRollCallEmployeeSetting(EditCustomizeEmployeeSettings command);
|
||||||
List<ReCalculateRollCallValues> reCalculateCommand);
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
OperationResult RemoveGroupSettings(long employeeSettingsId);
|
OperationResult RemoveGroupSettings(long employeeSettingsId);
|
||||||
@@ -92,10 +89,4 @@ public interface ICustomizeWorkshopSettingsApplication
|
|||||||
|
|
||||||
|
|
||||||
bool HasAnyEmployeeWithoutGroup(long workshopId);
|
bool HasAnyEmployeeWithoutGroup(long workshopId);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// این متد چک میکند که آیا شیفت پرسنل تغییر کرده است یا نه
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
bool CheckEmployeeShiftHasChanged(EditCustomizeEmployeeSettings command);
|
|
||||||
}
|
}
|
||||||
@@ -94,14 +94,4 @@ public class CreateEmployee
|
|||||||
public long WorkshopId { get; set; }
|
public long WorkshopId { get; set; }
|
||||||
public long? PersonelCode { get; set; }
|
public long? PersonelCode { get; set; }
|
||||||
|
|
||||||
public bool IsAuthorized { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// سریال شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSerial { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// سری شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSeri { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
using _0_Framework.Application;
|
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Employee;
|
|
||||||
|
|
||||||
public class EmployeeDataFromApiViewModel
|
|
||||||
{
|
|
||||||
public Gender Gender { get; set; }
|
|
||||||
public string FName { get; set; }
|
|
||||||
public string LName { get; set; }
|
|
||||||
public string FatherName { get; set; }
|
|
||||||
public string BirthDate { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// کدملی
|
|
||||||
/// </summary>
|
|
||||||
public string NationalCode { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// شماره شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumber { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// سریال شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSerial { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// سری شناسنامه
|
|
||||||
/// </summary>
|
|
||||||
public string IdNumberSeri { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -10,6 +10,4 @@ public class EmployeeSelectListViewModel
|
|||||||
{
|
{
|
||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
public string EmployeeFullName { get; set; }
|
public string EmployeeFullName { get; set; }
|
||||||
public bool Black { get; set; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
using AccountManagement.Application.Contracts.Media;
|
namespace CompanyManagment.App.Contracts.Employee;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Employee;
|
|
||||||
|
|
||||||
public class GetEditEmployeeInEmployeeDocumentViewModel
|
public class GetEditEmployeeInEmployeeDocumentViewModel
|
||||||
{
|
{
|
||||||
@@ -16,5 +14,4 @@ public class GetEditEmployeeInEmployeeDocumentViewModel
|
|||||||
public string Nationality { get; set; } = string.Empty;
|
public string Nationality { get; set; } = string.Empty;
|
||||||
public string Gender { get; set; } = string.Empty;
|
public string Gender { get; set; } = string.Empty;
|
||||||
public bool IsAuthorized { get; set; }
|
public bool IsAuthorized { get; set; }
|
||||||
public MediaViewModel Media { get; set; }
|
|
||||||
}
|
}
|
||||||
@@ -72,11 +72,6 @@ public interface IEmployeeApplication
|
|||||||
Task<GetEditEmployeeInEmployeeDocumentViewModel> GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId,
|
Task<GetEditEmployeeInEmployeeDocumentViewModel> GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId,
|
||||||
long workshopId);
|
long workshopId);
|
||||||
Task<OperationResult> EditEmployeeInEmployeeDocumentWorkFlow(EditEmployeeInEmployeeDocument command);
|
Task<OperationResult> EditEmployeeInEmployeeDocumentWorkFlow(EditEmployeeInEmployeeDocument command);
|
||||||
|
|
||||||
Task<List<EmployeeSelectListViewModel>> WorkedEmployeesInWorkshopSelectList(long workshopId);
|
|
||||||
|
|
||||||
Task<OperationResult<EmployeeDataFromApiViewModel>> GetEmployeeDataFromApi(string nationalCode, string birthDate);
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using _0_Framework_b.Application;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.EmployeeClientTemp;
|
namespace CompanyManagment.App.Contracts.EmployeeClientTemp;
|
||||||
|
|
||||||
@@ -10,19 +8,7 @@ public interface IEmployeeClientTempApplication
|
|||||||
OperationResult Create(CreateEmployeeClientTemp command);
|
OperationResult Create(CreateEmployeeClientTemp command);
|
||||||
|
|
||||||
EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId);
|
EmployeeClientTempGetDetailsViewModel GetDetails(long employeeId, long workshopId);
|
||||||
Task<List<EmployeeClientTempViewModel>> GetByEmployeeId(long employeeId);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class EmployeeClientTempViewModel
|
|
||||||
{
|
|
||||||
public string EmployeeFullName { get; set; }
|
|
||||||
public long WorkshopId { get; set; }
|
|
||||||
public long EmployeeId { get; set; }
|
|
||||||
public DateTime StartWorkDate { get; set; }
|
|
||||||
|
|
||||||
public string MaritalStatus { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class EmployeeClientTempGetDetailsViewModel
|
public class EmployeeClientTempGetDetailsViewModel
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ namespace CompanyManagment.App.Contracts.EmployeeDocuments
|
|||||||
public long WorkshopId { get; set; }
|
public long WorkshopId { get; set; }
|
||||||
public IFormFile PictureFile { get; set; }
|
public IFormFile PictureFile { get; set; }
|
||||||
public DocumentItemLabel Label { get; set; }
|
public DocumentItemLabel Label { get; set; }
|
||||||
public bool WithoutPicture { get; set; }
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,77 +59,6 @@ namespace CompanyManagment.App.Contracts.EmployeeDocuments
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
OperationResult AddRangeEmployeeDocumentItemsByAdmin(long workshopId, long employeeId,
|
OperationResult AddRangeEmployeeDocumentItemsByAdmin(long workshopId, long employeeId,
|
||||||
List<AddEmployeeDocumentItem> command);
|
List<AddEmployeeDocumentItem> command);
|
||||||
|
|
||||||
#region Mahan
|
|
||||||
/// <summary>
|
|
||||||
/// کارگاهی که افزودن پرسنل کرده اند. بر اساس نقش فیلتر میشوند
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<ICollection<WorkshopWithEmployeeDocumentsViewModel>> GetWorkshopDocumentCreatedEmployeeForAdmin(
|
|
||||||
List<long> workshops, long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<ICollection<WorkshopWithEmployeeDocumentsViewModel>> GetWorkshopDocumentRejectedForAdmin(
|
|
||||||
List<long> workshops, long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدارک های برگشت خورده براساس دسترسی افراد و نقششان. یک مدرک برگشت خورده به تمامی کسانی که به آن کارگاه دسترسی دارند و تمامی کسانی که هم نقش آپلود کننده بوده اند نمایش داده میشود
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetRejectedItemsByWorkshopIdAndRoleForAdminWorkFlow(long workshopId,
|
|
||||||
long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// کارگاه هایی که افزودن پرسنل کرده اند و مدارک آنها ناقص است
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<WorkshopWithEmployeeDocumentsViewModel>> GetCreatedEmployeesWorkshopDocumentForAdmin(
|
|
||||||
List<long> workshops, long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// پرسنلی که افزوده شده اند در کارگاه و آپلود مدارک آنها ناقص است
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetCreatedEmployeesDocumentByWorkshopIdForAdmin(long workshopId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// لیست کارگاه هایی که مدارک آپلود شده توسط کلاینت برگشت خورده است در کارپوشه ادمین
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshops"></param>
|
|
||||||
/// <param name="roleId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<WorkshopWithEmployeeDocumentsViewModel>> GetClientRejectedDocumentWorkshopsForAdmin(
|
|
||||||
List<long> workshops, long roleId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدارک های آپلود شده توسط کلاینت در کارگاه که برگشت خورده اند در کارپوشه ادمین
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetClientRejectedDocumentByWorkshopIdForAdmin(long workshopId);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// مدارک های برگشت خورده برای کلاینت
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="workshopId"></param>
|
|
||||||
/// <param name="accountId"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<EmployeeDocumentsViewModel>> GetClientRejectedDocumentForClient(long workshopId, long accountId);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
EmployeeDocumentItemViewModel GetOneDocumentItemDetailsForAdmin(long employeeId, long workshopId,long documentItemId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user