diff --git a/Company.Domain/ClassificationSchemeAgg/ClassificationEmployee.cs b/Company.Domain/ClassificationSchemeAgg/ClassificationEmployee.cs index e17a1e03..630f2b88 100644 --- a/Company.Domain/ClassificationSchemeAgg/ClassificationEmployee.cs +++ b/Company.Domain/ClassificationSchemeAgg/ClassificationEmployee.cs @@ -66,9 +66,6 @@ public class ClassificationEmployee : EntityBase /// /// ویرایش پرسنل طرح /// - /// - /// - /// /// /// public void Edit(long classificationGroupId, long classificationGroupJobId) @@ -77,4 +74,20 @@ public class ClassificationEmployee : EntityBase ClassificationGroupJobId = classificationGroupJobId; } + /// + /// ویرایش گروه های چندگانه پرسنل طرح + /// + /// + /// + /// + /// + public void EditMultipleGroupMember(long classificationGroupId, long classificationGroupJobId, DateTime startGroupDate, DateTime? endGroupDate) + { + ClassificationGroupId = classificationGroupId; + ClassificationGroupJobId = classificationGroupJobId; + StartGroupDate = startGroupDate; + if (endGroupDate.HasValue) + EndGroupDate = endGroupDate; + } + } \ No newline at end of file diff --git a/Company.Domain/ClassificationSchemeAgg/IClassificationEmployeeRepository.cs b/Company.Domain/ClassificationSchemeAgg/IClassificationEmployeeRepository.cs index 35ad6e16..8914b53f 100644 --- a/Company.Domain/ClassificationSchemeAgg/IClassificationEmployeeRepository.cs +++ b/Company.Domain/ClassificationSchemeAgg/IClassificationEmployeeRepository.cs @@ -21,5 +21,5 @@ public interface IClassificationEmployeeRepository : IRepository /// /// - Task GetEmployeeMemberizeData(long employeeId); + Task> GetEmployeeMemberizeData(long employeeId); } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/EditEmployeeGroup.cs b/CompanyManagment.App.Contracts/ClassificationScheme/EditEmployeeGroup.cs new file mode 100644 index 00000000..27d06023 --- /dev/null +++ b/CompanyManagment.App.Contracts/ClassificationScheme/EditEmployeeGroup.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; + +namespace CompanyManagment.App.Contracts.ClassificationScheme; +/// +/// ویرایش گروه پرسنل +/// +public class EditEmployeeGroup +{ + /// + /// آیا گروه بندی پرسنل چند گانه است + /// + public bool HasMultipleGroup { get; set; } + + /// + /// نام کامل پرسنل + /// + public string EmployeeFullName { get; set; } + + /// + /// آی دی پرسنل + /// + public long EmployeeId { get; set; } + + /// + /// آی دی طرح + /// + public long SchemeId { get; set; } + + /// + /// لیست گروه های پرسنل + /// + public List EditEmployeeGroupLists { get; set; } + + /// + /// لیست گروه های طرح + /// + public List ClassificationGroupList { get; set; } +} + +/// +/// لیست گروه های پرسنل +/// +public class EditEmployeeGroupList +{ + /// + /// آی دی + /// + public long Id { get; set; } + + /// + /// آی دی کارگاه + /// + public long WorkshopId { get; set; } + + + + + /// + /// آی دی گروه + /// + public long ClassificationGroupId { get; set; } + + /// + /// آی دی شغل + /// + public long ClassificationGroupJobId { get; set; } + + + /// + /// تاریخ شروع استفاده از گروه + /// + public DateTime? StartGroupDate { get; set; } + + /// + /// تاریخ پایان استفاده از گروه + /// + public DateTime? EndGroupDate { get; set; } + + /// + /// تاریخ شروع استفاده از گروه + /// + public string StartGroupDateFa { get; set; } + + /// + /// تاریخ پایان استفاده از گروه + /// + public string EndGroupDateFa { get; set; } + + /// + /// آیا حذف شده است + /// + public bool IsRemoved { get; set; } + + +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs index 9c9234bb..2c7a9ac0 100644 --- a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs +++ b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs @@ -142,12 +142,19 @@ public interface IClassificationSchemeApplication /// Task EditGroupMember(AddEmployeeToGroup command); + /// + /// ذخیره ویرایش گروه چندگانه پرسنل + /// + /// + /// + Task EditMultipleGroupMember(List command); + /// /// دریافت اطلاعات عضویتی پرسنل در گروه /// /// /// - Task GetEmployeeMemberizeData(long employeeId); + Task GetEmployeeMemberizeData(long employeeId); /// diff --git a/CompanyManagment.Application/ClassificationSchemeApplication.cs b/CompanyManagment.Application/ClassificationSchemeApplication.cs index 9140b7e4..972da3a3 100644 --- a/CompanyManagment.Application/ClassificationSchemeApplication.cs +++ b/CompanyManagment.Application/ClassificationSchemeApplication.cs @@ -380,20 +380,73 @@ public class ClassificationSchemeApplication : IClassificationSchemeApplication return op.Succcedded(); } + public async Task EditMultipleGroupMember(List command) + { + var op = new OperationResult(); + foreach (var item in command) + { + #region Validation + + if (item.ClassificationGroupId == 0) + return op.Failed("لطفا گروه را انتخاب کنید"); + + if (item.ClassificationGroupJobId == 0) + return op.Failed("لطفا سمت را انتخاب کنید"); + + if (!item.StartGroupDateFa.TryToGeorgianDateTime(out var startDate)) + { + string startDateFaild = "تاریخ شروع" + item.StartGroupDateFa + "صحیح نمیباشد"; + return op.Failed(startDateFaild); + } + + if (!string.IsNullOrWhiteSpace(item.EndGroupDateFa)) + { + if (!item.EndGroupDateFa.TryToGeorgianDateTime(out var endDate)) + { + string endDateFaild = "تاریخ پایان" + item.EndGroupDateFa + "صحیح نمیباشد"; + return op.Failed(endDateFaild); + } + } + + #endregion + } + + foreach (var item in command) + { + var edit = _classificationEmployeeRepository.Get(item.Id); + + if(string.IsNullOrWhiteSpace(item.EndGroupDateFa)) + { + edit.EditMultipleGroupMember(item.ClassificationGroupId, item.ClassificationGroupJobId, item.StartGroupDateFa.ToGeorgianDateTime(), null); + } + else + { + edit.EditMultipleGroupMember(item.ClassificationGroupId, item.ClassificationGroupJobId, item.StartGroupDateFa.ToGeorgianDateTime(), item.EndGroupDateFa.ToGeorgianDateTime()); + } + + await _classificationEmployeeRepository.SaveChangesAsync(); + } + + return op.Succcedded(); + } + /// /// دریافت اطلاعات عضویتی پرسنل در گروه /// /// /// - public async Task GetEmployeeMemberizeData(long employeeId) + public async Task GetEmployeeMemberizeData(long employeeId) { - var result = new AddEmployeeToGroup(); + var result = new EditEmployeeGroup(); var res = await _classificationEmployeeRepository.GetEmployeeMemberizeData(employeeId); - result.EmployeeId = employeeId; - result.GroupId = res.ClassificationGroupId; - result.JobId = res.ClassificationGroupJobId; - result.Id = res.id; + + if (res.Any()) + { + result.HasMultipleGroup = res.Count > 1; + result.EditEmployeeGroupLists = res; + } + return result; diff --git a/CompanyManagment.EFCore/Repository/ClassificationEmployeeRepository.cs b/CompanyManagment.EFCore/Repository/ClassificationEmployeeRepository.cs index 36566703..2451af4a 100644 --- a/CompanyManagment.EFCore/Repository/ClassificationEmployeeRepository.cs +++ b/CompanyManagment.EFCore/Repository/ClassificationEmployeeRepository.cs @@ -183,9 +183,20 @@ public class ClassificationEmployeeRepository : RepositoryBase /// /// - public async Task GetEmployeeMemberizeData(long employeeId) + public async Task> GetEmployeeMemberizeData(long employeeId) { - return await _context.ClassificationEmployees.FirstOrDefaultAsync(x => x.EmployeeId == employeeId); + return await _context.ClassificationEmployees.Where(x => x.EmployeeId == employeeId).Select(x=> new EditEmployeeGroupList + { + Id = x.id, + WorkshopId = x.WorkshopId, + ClassificationGroupId = x.ClassificationGroupId, + ClassificationGroupJobId = x.ClassificationGroupJobId, + StartGroupDate = x.StartGroupDate, + EndGroupDate = x.EndGroupDate, + StartGroupDateFa = x.StartGroupDate.HasValue ? x.StartGroupDate.ToFarsi() : "", + EndGroupDateFa = x.EndGroupDate.HasValue ? x.EndGroupDate.ToFarsi() : "", + + }).ToListAsync(); } diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs index 72d4eebe..b1c4d361 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml.cs @@ -414,18 +414,40 @@ public class ClassificationSchemeModel : PageModel /// public IActionResult OnGetEditGroupMember(long employeeId, long schemeId, string employeeFullName) { - var model = new AddEmployeeToGroup(); + var groups = _classificationSchemeApplication.GetGroups(schemeId).GetAwaiter().GetResult(); var employeeMemberizeData = _classificationSchemeApplication.GetEmployeeMemberizeData(employeeId).GetAwaiter().GetResult(); - model.SchemeId = schemeId; - model.EmployeeId = employeeId; - model.EmployeeFullName = employeeFullName; - model.ClassificationGroupList = groups; - model.GroupId = employeeMemberizeData.GroupId; - model.JobId = employeeMemberizeData.JobId; - model.Id = employeeMemberizeData.Id; - return Partial("_ClassificationPartials/EditGroupMember", model); + //اگر یک گروه داشت + if (!employeeMemberizeData.HasMultipleGroup) + { + var model = new AddEmployeeToGroup(); + + + model.SchemeId = schemeId; + model.EmployeeId = employeeId; + model.EmployeeFullName = employeeFullName; + + if (!employeeMemberizeData.EditEmployeeGroupLists.Any()) + return Partial("_ClassificationPartials/EditGroupMember", model); + + model.ClassificationGroupList = groups; + model.GroupId = employeeMemberizeData.EditEmployeeGroupLists.FirstOrDefault()!.ClassificationGroupId; + model.JobId = employeeMemberizeData.EditEmployeeGroupLists.FirstOrDefault()!.ClassificationGroupJobId; + model.Id = employeeMemberizeData.EditEmployeeGroupLists.FirstOrDefault()!.Id; ; + return Partial("_ClassificationPartials/EditGroupMember", model); + } + //اگر چند گروه داشت + var multipleModel = new EditEmployeeGroup(); + multipleModel.EmployeeId = employeeId; + multipleModel.SchemeId = schemeId; + multipleModel.EmployeeFullName = employeeFullName; + multipleModel.EditEmployeeGroupLists = employeeMemberizeData.EditEmployeeGroupLists; + multipleModel.ClassificationGroupList = groups; + + + + return Partial("_ClassificationPartials/EditMultipleGroupMember", multipleModel); } @@ -452,6 +474,28 @@ public class ClassificationSchemeModel : PageModel message = result.Message, }); } + /// + /// ذخیره ویرایش گروه چندگانه پرسنل + /// + /// + /// + public IActionResult OnPostEditMultipleGroupMember([FromBody] List command) + { + var result = _classificationSchemeApplication.EditMultipleGroupMember(command).GetAwaiter().GetResult(); + if (!result.IsSuccedded) + { + return new JsonResult(new + { + isSuccess = false, + message = result.Message, + }); + } + return new JsonResult(new + { + isSuccess = true, + message = result.Message, + }); + } #endregion @@ -510,7 +554,7 @@ public class ClassificationSchemeModel : PageModel string mathModel = ""; var employeeMemberizeData = _classificationSchemeApplication.GetEmployeeMemberizeData(employeeId).GetAwaiter().GetResult(); - var groupId = employeeMemberizeData.GroupId; + var groupId = employeeMemberizeData.EditEmployeeGroupLists.FirstOrDefault()!.ClassificationGroupId; var group = _classificationSchemeApplication.GetGroups(schemeId).GetAwaiter().GetResult(); var groupNo = group.FirstOrDefault(x => x.GroupId == groupId)!.GroupNo; var groupSalaryData = _classificationSchemeApplication.GetEditSalariesData(schemeId, startDate, endDate).GetAwaiter() diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/EditGroupMember.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/EditGroupMember.cshtml index ead5ebd3..8c8ceb79 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/EditGroupMember.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/EditGroupMember.cshtml @@ -16,6 +16,11 @@ .modal .modal-dialog .modal-content { padding-bottom: 10px; } + + .modal-title { + width: 276px; + left: 47%; + } } diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/EditMultipleGroupMember.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/EditMultipleGroupMember.cshtml new file mode 100644 index 00000000..27941f0f --- /dev/null +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/EditMultipleGroupMember.cshtml @@ -0,0 +1,266 @@ +@using CompanyManagment.App.Contracts.GroupPlanJobItem +@model CompanyManagment.App.Contracts.ClassificationScheme.EditEmployeeGroup +@Html.AntiForgeryToken() +@{ + + +} + + + افزودن پرسنل به گروه + + × + + + + + + + @Model.EmployeeFullName + + + + + + + @foreach (var groupItem in @Model.EditEmployeeGroupLists) + { + + + + + انتخاب گروه + @foreach (var item in Model.ClassificationGroupList) + { + گروه @item.GroupNo + } + + + + + + انتخاب سمت + + + + + + + + + + تاریخ شروع + + + + + تاریخ پایان + + + + + + + + } + + + + + + + + + + + + + + +