From 671f6be87aa6b2da02b3efcdacf799b34b0fdc50 Mon Sep 17 00:00:00 2001 From: MahanCh Date: Tue, 22 Apr 2025 18:13:09 +0330 Subject: [PATCH] change current day mannual edit validaton --- .../RollCallApplication.cs | 61 +++++++++++-------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/CompanyManagment.Application/RollCallApplication.cs b/CompanyManagment.Application/RollCallApplication.cs index 62f786ab..77dc4110 100644 --- a/CompanyManagment.Application/RollCallApplication.cs +++ b/CompanyManagment.Application/RollCallApplication.cs @@ -336,15 +336,19 @@ public class RollCallApplication : IRollCallApplication public OperationResult ManualEdit(CreateOrEditEmployeeRollCall command) { var operation = new OperationResult(); + var now = DateTime.Now; DateTime date = command.DateFa.ToGeorgianDateTime(); if (date == Tools.GetUndefinedDateTime()) return operation.Failed("فرمت تاریخ وارد شده صحیح نمی باشد"); - if (date >= DateTime.Now.Date) - { - return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); - } + + + + //if (date >= DateTime.Now.Date) + //{ + // return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); + //} var twoDaysEarlier = date.AddDays(-2).Date; var twoDaysLater = date.AddDays(2).Date >= DateTime.Today @@ -407,8 +411,8 @@ public class RollCallApplication : IRollCallApplication if (startDateTime >= endDateTime) return operation.Failed("زمان ورود نمی تواند بعد یا مساوی زمان خروج باشد"); - if (endDateTime.Date >= DateTime.Today) - return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); + //if (endDateTime.Date >= DateTime.Today) + // return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); var rollCall = new EditRollCall { @@ -420,7 +424,10 @@ public class RollCallApplication : IRollCallApplication } - + if (newRollCallDates.Any(x => x.StartDate >= now || x.EndDate >= now)) + { + return operation.Failed("حضورغیاب وارد شده نمیتواند در آینده باشد"); + } if (newRollCallDates.Any(x => newRollCallDates.Any(y => x != y && x.EndDate >= y.StartDate && x.StartDate <= y.EndDate))) return operation.Failed("بازه های وارد شده با هم تداخل دارند"); @@ -447,7 +454,7 @@ public class RollCallApplication : IRollCallApplication { x.ShiftDate = _rollCallDomainService.GetEmployeeShiftDateByRollCallStartDate(command.WorkshopId, command.EmployeeId, - x.StartDate!.Value,x.EndDate!.Value); + x.StartDate!.Value,x.EndDate.Value); }); if (newRollCallDates.Any(x => x.ShiftDate.Date != date.Date)) @@ -455,14 +462,13 @@ public class RollCallApplication : IRollCallApplication return operation.Failed("حضور غیاب در حال ویرایش را نمیتوانید از تاریخ شیفت عقب تر یا جلو تر ببرید"); } - - if (new TimeSpan(newRollCallDates.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks)) > TimeSpan.FromHours(26)) - { - return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); - } + if (new TimeSpan(newRollCallDates.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks)) > TimeSpan.FromHours(26)) + { + return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); + } - if (newRollCallDates.Any(x => employeeRollCalls.Any(y => + if (newRollCallDates.Any(x => employeeRollCalls.Any(y => y.StartDate.Value.Date != command.DateFa.ToGeorgianDateTime().Date && x.EndDate >= y.StartDate.Value && x.StartDate <= y.EndDate.Value))) return operation.Failed("بازه های وارد شده با حضور غیاب های مربوط به روز های قبل و بعد تداخل زمانی دارد"); @@ -496,26 +502,27 @@ public class RollCallApplication : IRollCallApplication _rollCallRepository.AddRange(rollCallsAsEntityModels); _rollCallRepository.SaveChanges(); - foreach (var rollCallsAsEntityModel in rollCallsAsEntityModels) { rollCallsAsEntityModel.Edit(rollCallsAsEntityModel.StartDate.Value, rollCallsAsEntityModel.EndDate.Value, _rollCallDomainService); } _rollCallRepository.SaveChanges(); + return operation.Succcedded(); } public OperationResult ManualEditForUndefined(CreateOrEditEmployeeRollCall command) { var operation = new OperationResult(); + var now = DateTime.Now; DateTime date = command.DateFa.ToGeorgianDateTime(); if (date == Tools.GetUndefinedDateTime()) return operation.Failed("فرمت تاریخ وارد شده صحیح نمی باشد"); - if (date >= DateTime.Now.Date) - { - return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); - } + //if (date >= DateTime.Now.Date) + //{ + // return operation.Failed("امکان اضافه کردن حضور غیاب برای روز جاری و روز های آینده وجود ندارد"); + //} var twoDaysEarlier = date.AddDays(-2).Date; var twoDaysLater = date.AddDays(2).Date >= DateTime.Today @@ -578,8 +585,8 @@ public class RollCallApplication : IRollCallApplication if (startDateTime >= endDateTime) return operation.Failed("زمان ورود نمی تواند بعد یا مساوی زمان خروج باشد"); - if (endDateTime.Date >= DateTime.Today) - return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); + //if (endDateTime.Date >= DateTime.Today) + // return operation.Failed("نمی توانید برای روز جاری یا روز های آینده حضور غیاب ثبت کنید"); var rollCall = new EditRollCall { @@ -594,6 +601,12 @@ public class RollCallApplication : IRollCallApplication { }); + + if (newRollCallDates.Any(x => x.StartDate >= now || x.EndDate >= now)) + { + return operation.Failed("حضورغیاب وارد شده نمیتواند در آینده باشد"); + } + if (newRollCallDates.Any(x => newRollCallDates.Any(y => x != y && x.EndDate >= y.StartDate && x.StartDate <= y.EndDate))) return operation.Failed("بازه های وارد شده با هم تداخل دارند"); @@ -618,7 +631,7 @@ public class RollCallApplication : IRollCallApplication { x.ShiftDate = _rollCallDomainService.GetEmployeeShiftDateByRollCallStartDate(command.WorkshopId, command.EmployeeId, - x.StartDate!.Value,x.EndDate!.Value); + x.StartDate!.Value,x.EndDate.Value); }); if (newRollCallDates.Any(x => x.ShiftDate.Date != date.Date)) { @@ -626,10 +639,10 @@ public class RollCallApplication : IRollCallApplication } if (new TimeSpan(newRollCallDates.Sum(x => (x.EndDate.Value - x.StartDate.Value).Ticks)) > TimeSpan.FromHours(26)) { - return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); + return operation.Failed("بازه حضور پرسنل نمی تواند بیشتر از 26 ساعت باشد"); } - if (newRollCallDates.Any(x => employeeRollCalls.Any(y => + if (newRollCallDates.Any(x => employeeRollCalls.Any(y => y.StartDate.Value.Date != command.DateFa.ToGeorgianDateTime().Date && x.EndDate >= y.StartDate.Value && x.StartDate <= y.EndDate.Value))) return operation.Failed("بازه های وارد شده با حضور غیاب های مربوط به روز های قبل و بعد تداخل زمانی دارد");