From 4519be75b8f1b2a64f69343e85e888c781e0765c Mon Sep 17 00:00:00 2001 From: samsys Date: Fri, 19 Jul 2024 00:27:06 +0330 Subject: [PATCH] add new Task Changes --- 0_Framework/Application/Version.cs | 4 +- .../Position/IPositionApplication.cs | 1 - .../Task/OperationModalViewModel.cs | 1 + .../Task/TaskSearchModel.cs | 1 + .../TaskApplication.cs | 19 +- .../Repository/TaskRepository.cs | 3157 +++++++++-------- .../Repository/TaskSubjectRepository.cs | 9 +- .../IPersonalContractingPartyRepository.cs | 10 +- .../IPersonalContractingPartyApp.cs | 10 +- .../PersonalContractingPartyApplication.cs | 14 +- .../PersonalContractingPartyRepository.cs | 24 +- .../AdminNew/Pages/Company/Task/Create.cshtml | 35 +- .../Pages/Company/Task/Create.cshtml.cs | 46 +- .../Task/CreateCRUDTaskSubjectModal.cshtml | 95 +- .../Pages/Company/Task/DetailsModal.cshtml | 74 +- .../AdminNew/Pages/Company/Task/Edit.cshtml | 465 ++- .../AdminNew/Pages/Company/Task/Group.cshtml | 462 +-- .../Pages/Company/Task/Group.cshtml.cs | 4 +- .../Company/Task/GroupAddMemberToGroup.cshtml | 213 +- .../Company/Task/GroupCreateModal.cshtml | 71 +- .../AdminNew/Pages/Company/Task/Index.cshtml | 235 +- .../Pages/Company/Task/Index.cshtml.cs | 20 +- .../Pages/Company/Task/OperationModal.cshtml | 6 +- .../Company/Task/OperationRequestModal.cshtml | 700 +++- ServiceHost/ServiceHost.csproj | 29 +- .../AssetsAdminNew/Tasks/css/DetailModal.css | 43 +- .../AssetsAdminNew/Tasks/css/Index.css | 88 +- .../AssetsAdminNew/Tasks/css/create.css | 2 +- .../wwwroot/AssetsAdminNew/Tasks/js/Index.js | 739 +++- .../AssetsAdminNew/Tasks/js/OperationModal.js | 4 +- .../wwwroot/AssetsAdminNew/Tasks/js/create.js | 82 +- .../AssetsClient/css/rollcall-package.css | 25 + .../AssetsClient/css/task-manager-create.css | 25 + .../AssetsClient/css/task-manager-list.css | 14 +- .../wwwroot/AssetsClient/images/ticket.png | Bin 0 -> 1539 bytes 35 files changed, 4066 insertions(+), 2661 deletions(-) create mode 100644 ServiceHost/wwwroot/AssetsClient/images/ticket.png diff --git a/0_Framework/Application/Version.cs b/0_Framework/Application/Version.cs index 7dc68f86..7bb85fc9 100644 --- a/0_Framework/Application/Version.cs +++ b/0_Framework/Application/Version.cs @@ -10,8 +10,8 @@ public static class Version { static Version() { - StyleVersion = "2.11.26"; - AdminVersion = "2.5.11"; + StyleVersion = "2.11.27"; + AdminVersion = "2.5.12"; CameraVersion = "1.0.3"; } diff --git a/AccountManagement.Application.Contracts/Position/IPositionApplication.cs b/AccountManagement.Application.Contracts/Position/IPositionApplication.cs index bad57871..8195e27f 100644 --- a/AccountManagement.Application.Contracts/Position/IPositionApplication.cs +++ b/AccountManagement.Application.Contracts/Position/IPositionApplication.cs @@ -18,5 +18,4 @@ public interface IPositionApplication OperationResult RemoveAccountListFromPosition(List accountIdList, long PositionId); List GetLowerPosition(); int GetLastPositionValue(); - } \ No newline at end of file diff --git a/AccountManagement.Application.Contracts/Task/OperationModalViewModel.cs b/AccountManagement.Application.Contracts/Task/OperationModalViewModel.cs index c19be162..d454d059 100644 --- a/AccountManagement.Application.Contracts/Task/OperationModalViewModel.cs +++ b/AccountManagement.Application.Contracts/Task/OperationModalViewModel.cs @@ -13,6 +13,7 @@ public class OperationModalViewModel public CreateTaskTimeRequest CreateTaskTimeRequest { get; set; } public CompleteTaskViewModel CompleteTaskViewModel { get; set; } public TaskViewModel ModalTaskRequest { get; set; } + public EditTask TaskDetails { get; set; } public string Type { get; set; } diff --git a/AccountManagement.Application.Contracts/Task/TaskSearchModel.cs b/AccountManagement.Application.Contracts/Task/TaskSearchModel.cs index ba68ccbd..f40ff119 100644 --- a/AccountManagement.Application.Contracts/Task/TaskSearchModel.cs +++ b/AccountManagement.Application.Contracts/Task/TaskSearchModel.cs @@ -13,6 +13,7 @@ public class TaskSearchModel public string IsTimeRequest { get; set; } public string TimeRequestAccepted { get; set; } public string TypeOfTicket { get; set; } + public string GeneralSearch { get; set; } } \ No newline at end of file diff --git a/AccountManagement.Application/TaskApplication.cs b/AccountManagement.Application/TaskApplication.cs index e9608a7b..132ec015 100644 --- a/AccountManagement.Application/TaskApplication.cs +++ b/AccountManagement.Application/TaskApplication.cs @@ -14,6 +14,7 @@ using TaskManager.Domain.PositionAgg; using System.Reflection; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using System.Globalization; namespace AccountManagement.Application; @@ -159,6 +160,11 @@ public class TaskApplication : ITaskApplication } var task = _taskRepository.Get(command.Id); var endTask = command.EndTaskDate.ToGeorgianDateTime(); + var errorDateTime = new DateTime(3000, 12, 20, new PersianCalendar()); + if (endTask == errorDateTime) + { + return operation.Failed("لطفا تاریخ را به درستی وارد کنید"); + } task.Edit(command.Title, endTask, command.Description, command.SenderId, command.ContractingPartyName); _taskRepository.SaveChanges(); @@ -480,9 +486,13 @@ public class TaskApplication : ITaskApplication } - var endTask = string.IsNullOrWhiteSpace(command.EndTaskTime) ? command.EndTaskDate.ToGeorgianDateTime2() : command.EndTaskDate.ToGeorgianDateWithTime(command.EndTaskTime); - + var endTask = string.IsNullOrWhiteSpace(command.EndTaskTime) || command.EndTaskTime=="00:00" ? command.EndTaskDate.ToGeorgianDateTime2() : command.EndTaskDate.ToGeorgianDateWithTime(command.EndTaskTime); + var errorDateTime = new DateTime(3000, 12, 20, new PersianCalendar()); + if (endTask == errorDateTime) + { + return operation.Failed("لطفا تاریخ را به درستی وارد کنید"); + } var task = new Tasks(command.Title, endTask, command.Description, command.SenderId, command.ContractingPartyName); _taskRepository.Create(task); @@ -924,6 +934,11 @@ public class TaskApplication : ITaskApplication var task = _taskRepository.Get(command.TaskId); var requestTime = command.RequestTime.ToGeorgianDateTime(); + var errorDateTime = new DateTime(3000, 12, 20, new PersianCalendar()); + if (requestTime == errorDateTime) + { + return operation.Failed("لطفا تاریخ را به درستی وارد کنید"); + } if (task.SenderId==accountId) { task.ChangeTimeTask(requestTime); diff --git a/AccountMangement.Infrastructure.EFCore/Repository/TaskRepository.cs b/AccountMangement.Infrastructure.EFCore/Repository/TaskRepository.cs index 8eec5608..6711fecc 100644 --- a/AccountMangement.Infrastructure.EFCore/Repository/TaskRepository.cs +++ b/AccountMangement.Infrastructure.EFCore/Repository/TaskRepository.cs @@ -14,1775 +14,1830 @@ using AccountManagement.Domain.TaskAgg; using TaskManager.Domain.PositionAgg; using static Microsoft.EntityFrameworkCore.DbLoggerCategory; using Microsoft.Identity.Client; +using Newtonsoft.Json.Linq; namespace AccountMangement.Infrastructure.EFCore.Repository; public class TaskRepository : RepositoryBase, ITaskRepository { - private readonly AccountContext _accountContext; - private readonly IHttpContextAccessor _contextAccessor; - private readonly IAccountRepository _accountRepository; - public readonly IPositionRepository _PositionRepository; + private readonly AccountContext _accountContext; + private readonly IHttpContextAccessor _contextAccessor; + private readonly IAccountRepository _accountRepository; + public readonly IPositionRepository _PositionRepository; - public TaskRepository(IHttpContextAccessor contextAccessor, AccountContext accountContext, - IAccountRepository accountRepository, IPositionRepository positionRepository) : base(accountContext) - { - _contextAccessor = contextAccessor; - _accountContext = accountContext; - _accountRepository = accountRepository; - _PositionRepository = positionRepository; - } + public TaskRepository(IHttpContextAccessor contextAccessor, AccountContext accountContext, + IAccountRepository accountRepository, IPositionRepository positionRepository) : base(accountContext) + { + _contextAccessor = contextAccessor; + _accountContext = accountContext; + _accountRepository = accountRepository; + _PositionRepository = positionRepository; + } - public EditTask GetDetails(long TaskId) - { + public EditTask GetDetails(long TaskId) + { - return _accountContext.Tasks.Where(x => x.id == TaskId).Select(x => new EditTask() - { - EndTaskDate = x.EndTaskDate.ToFarsi(), - Description = x.Description, - Id = x.id, - Title = x.Title, - medias = _accountContext.TaskMedias.Include(z => z.Media).Where(e => e.TaskId == x.id).Select(m => - new MediaViewModel() - { - Path = m.Media.Path, - Type = m.Media.Type, - Category = m.Media.Category, - Id = m.Media.id - }).ToList(), - EndTaskTime = x.EndTaskDate.ToFarsiFull().Substring(11), - ContractingPartyName = x.ContractingPartyName, - CompleteDescription = x.DoneDescription, - IsDone = x.IsDone, - ReceiverId = _accountContext.Assigns.Where(a => a.TaskId == x.id).Select(a => a.AssignedId).ToList(), - SenderId = x.SenderId + return _accountContext.Tasks.Where(x => x.id == TaskId).Select(x => new EditTask() + { + EndTaskDate = x.EndTaskDate.ToFarsi(), + Description = x.Description, + Id = x.id, + Title = x.Title, + medias = _accountContext.TaskMedias.Include(z => z.Media).Where(e => e.TaskId == x.id).Select(m => + new MediaViewModel() + { + Path = m.Media.Path, + Type = m.Media.Type, + Category = m.Media.Category, + Id = m.Media.id + }).ToList(), + EndTaskTime = x.EndTaskDate.ToFarsiFull().Substring(11), + ContractingPartyName = x.ContractingPartyName, + CompleteDescription = x.DoneDescription, + IsDone = x.IsDone, + ReceiverId = _accountContext.Assigns.Where(a => a.TaskId == x.id).Select(a => a.AssignedId).ToList(), + SenderId = x.SenderId - }).FirstOrDefault(); - } + }).FirstOrDefault(); + } - public void Remove(long id) - { - var task = Get(id); - Remove(task); - } + public void Remove(long id) + { + var task = Get(id); + Remove(task); + } - public List GetAllRequestedTasks(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 - }; - IQueryable query; + public List GetAllRequestedTasks(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 + }; + IQueryable query; - if (positionValue == 1) - { - query = _accountContext.Assigns.Include(x => x.Task).Where(x => - x.Task.IsDone == false && x.Task.IsActiveString == "true" && - (x.Task.IsCanceledRequest == true || x.Task.TimeRequest == true || x.Task.IsDoneRequest)).Select(x => - new TaskViewModel() - { + if (positionValue == 1) + { + query = _accountContext.Assigns.Include(x => x.Task).Where(x => + x.Task.IsDone == false && x.Task.IsActiveString == "true" && + (x.Task.IsCanceledRequest == true || x.Task.TimeRequest == true || x.Task.IsDoneRequest)).Select(x => + new TaskViewModel() + { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = x.Task.TaskMedias.Count(m => m.TaskId == x.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = x.Task.TaskMedias.Count(m => m.TaskId == x.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest - }); - } - else - { - query = _accountContext.Assigns.Include(x => x.Task).Where(x => - !x.Task.IsDone && x.Task.IsActiveString == "true" && - (x.Task.IsCanceledRequest || x.Task.TimeRequest || x.Task.IsDoneRequest) && (accountId == x.Task.SenderId || positionValue < x.AssignerPositionValue)).Select(x => - new TaskViewModel() - { + }); + } + else + { + query = _accountContext.Assigns.Include(x => x.Task).Where(x => + !x.Task.IsDone && x.Task.IsActiveString == "true" && + (x.Task.IsCanceledRequest || x.Task.TimeRequest || x.Task.IsDoneRequest) && (accountId == x.Task.SenderId || positionValue < x.AssignerPositionValue)).Select(x => + new TaskViewModel() + { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = x.Task.TaskMedias.Count(m => m.TaskId == x.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = x.Task.TaskMedias.Count(m => m.TaskId == x.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest - }); - } + }); + } //res = res.GroupBy(x => x.Id).Select(x => x.First()); //res = res.OrderBy(x => x.IsDone ? 1 : 0) // .ThenBy(x => x.EndTaskDateGE).ThenBy(x => x.IsCancel ? 0 : 1); + 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), + { + 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, + SelfName = _accountContext.Accounts.FirstOrDefault(a => a.id == accountId).Fullname, - Assigned = - x.AssignedId == accountId ? - ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) - .Where(x => x.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 - }); - 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) && + Assigned = + x.AssignedId == accountId ? + ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) + .Where(x => x.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 + }); + 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 > 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))); - } + (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.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.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.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.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.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); + if (!string.IsNullOrWhiteSpace(searchModel.IsCancelRequest)) + { + bool isCancelReq = bool.Parse(searchModel.IsCancelRequest); + res = res.Where(x => x.IsCancelRequest == isCancelReq); - } + } - var resEnum = res.AsEnumerable(); - var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); + var resEnum = res.AsEnumerable(); + var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); - if (searchModel.AccountId > 0) - { - result = result.Where(x => x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId)); - } + if (searchModel.AccountId > 0) + { + result = result.Where(x => x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId)); + } - var orderResult = result.OrderBy(x => x.IsDone ? 1 : 0) - .ThenBy(x => x.EndTaskDateGE).ThenBy(x => x.IsCancel ? 0 : 1); - var final = orderResult.Skip(searchModel.PageIndex).Take(30).ToList(); + var orderResult = result.OrderBy(x => x.IsDone ? 1 : 0) + .ThenBy(x => x.EndTaskDateGE).ThenBy(x => x.IsCancel ? 0 : 1); + var finalList = 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)) - .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, + var AddAssign = finalList.Select(x => new TaskViewModel() + { + AssignViewModels = _accountContext.Accounts.Include(x => x.Position).Where(a => x.Assigned.Contains(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, - }).ToList(); + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + var finalAssign = AddAssign.Select(x => new TaskViewModel() + { - AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() - { - AssignViewModels = a.ToList(), - PosValue = a.Key - }).ToList() - : 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.IsCancelRequest || x.RequestTime || x.IsDoneRequest ? SetRequestTasksColors(x.RequestTime, x.IsCancelRequest, x.IsDoneRequest) : "", - MediaCount = x.MediaCount, - HasAttachment = x.MediaCount > 0, - SelfName = x.SelfName, - SelfAssigned = x.SelfAssigned, - SelfAssigner = x.SelfAssigner, - Description = x.Description, - IsDoneRequest = x.IsDoneRequest - }).ToList(); + AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() + { + AssignViewModels = a.ToList(), + PosValue = a.Key + }).ToList() + : 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.IsCancelRequest || x.RequestTime || x.IsDoneRequest ? SetRequestTasksColors(x.RequestTime, x.IsCancelRequest, x.IsDoneRequest) : "", + MediaCount = x.MediaCount, + HasAttachment = (!string.IsNullOrWhiteSpace(x.Description) || x.MediaCount > 0), + SelfName = x.SelfName, + SelfAssigned = x.SelfAssigned, + SelfAssigner = x.SelfAssigner, + Description = x.Description, + IsDoneRequest = x.IsDoneRequest + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + var final = finalAssign.Select(x => new TaskViewModel() + { - AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, - CanCheckRequests = x.Sender.PositionValue >= positionValue, - Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname - }).ToList(); - return final; - } + AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, + CanCheckRequests = x.Sender.PositionValue >= positionValue, + Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname + }).ToList(); + return final; + } - public List GetTasks(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 - }; - IQueryable query; + public List GetTasks(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 + }; + IQueryable query; - if (positionValue == 1) - { - query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) - .Where(x => - x.Task.IsActiveString == "true" && (!x.Task.IsCanceledRequest && !x.Task.TimeRequest && !x.Task.IsDoneRequest)) - .Select(x => - new TaskViewModel() - { + if (positionValue == 1) + { + query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) + .Where(x => + x.Task.IsActiveString == "true" && (!x.Task.IsCanceledRequest || !x.Task.TimeRequest || !x.Task.IsDoneRequest)) + .Select(x => + new TaskViewModel() + { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest, + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest, - }); - } - else - { - query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) - .Where(x => - x.Task.IsActiveString == "true" && (x.AssignedId == accountId || x.AssignerId == accountId) && (!x.Task.IsCanceledRequest && !x.Task.TimeRequest && !x.Task.IsDoneRequest)) - .Select(x => - new TaskViewModel() - { + }); + } + else + { + query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) + .Where(x => + x.Task.IsActiveString == "true" && (x.AssignedId == accountId || x.AssignerId == accountId) && (!x.Task.IsCanceledRequest || !x.Task.TimeRequest || !x.Task.IsDoneRequest)) + .Select(x => + new TaskViewModel() + { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest, + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest, + - }); - } + }); + } //res = res.GroupBy(x => x.Id).Select(x => x.First()); //res = res.OrderBy(x => x.IsDone ? 1 : 0) // .ThenBy(x => x.EndTaskDateGE).ThenBy(x => x.IsCancel ? 0 : 1); + 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), + { + 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, + SelfName = _accountContext.Accounts.FirstOrDefault(a => a.id == accountId).Fullname, - Assigned = - x.AssignedId == accountId ? - ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) - .Where(x => x.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 - }); - 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) && + Assigned = + x.AssignedId == accountId ? + ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) + .Where(x => x.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 + }); + 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 > 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))); - } + (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.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.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.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.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.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); + if (!string.IsNullOrWhiteSpace(searchModel.IsCancelRequest)) + { + bool isCancelReq = bool.Parse(searchModel.IsCancelRequest); + res = res.Where(x => x.IsCancelRequest == isCancelReq); - } + } - var resEnum = res.AsEnumerable(); - var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); + var resEnum = res.AsEnumerable(); + var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); - if (searchModel.AccountId > 0) - { - result = result.Where(x => x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId)); - } + 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 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(); + 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)) - .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 + final = final.Select(x => new TaskViewModel() + { + AssignViewModels = _accountContext.Accounts.Include(x => x.Position).Where(a => x.Assigned.Contains(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 - }).ToList(); + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() - { - AssignViewModels = a.ToList(), - PosValue = a.Key - }).ToList() - : 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 - }).ToList(); + AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() + { + AssignViewModels = a.ToList(), + PosValue = a.Key + }).ToList() + : 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 = (!string.IsNullOrWhiteSpace(x.Description) || x.MediaCount > 0) ? true : false, + SelfName = x.SelfName, + SelfAssigned = x.SelfAssigned, + SelfAssigner = x.SelfAssigner, + Description = x.Description, + IsDoneRequest = x.IsDoneRequest + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, - Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname + AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, + Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname - }).ToList(); - return final; + }).ToList(); + return final; - } + } - public List GetSentTasks(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 - }; - IQueryable query; + public List GetSentTasks(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 + }; + IQueryable query; - if (positionValue == 1) - { - query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) - .Where(x => - x.Task.IsActiveString == "true" && (x.AssignerId == accountId &&x.AssignedId!=accountId)&&x.Task.SenderId==accountId&& (!x.Task.IsCanceledRequest && !x.Task.TimeRequest && !x.Task.IsDoneRequest)) - .Select(x => - new TaskViewModel() - { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest, + if (positionValue == 1) + { + query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) + .Where(x => + x.Task.IsActiveString == "true" && (x.AssignerId == accountId && x.AssignedId != accountId) && x.Task.SenderId == accountId && (!x.Task.IsCanceledRequest || !x.Task.TimeRequest || !x.Task.IsDoneRequest)) + .Select(x => + new TaskViewModel() + { + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest, - }); + }); - } - else - { - query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) - .Where(x => - x.Task.IsActiveString == "true" && x.AssignerId == accountId) - .Select(x => - new TaskViewModel() - { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest, + } + else + { + query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) + .Where(x => + x.Task.IsActiveString == "true" && x.AssignerId == accountId) + .Select(x => + new TaskViewModel() + { + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest, - }); + }); - } - + } + 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), + { + 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, + SelfName = _accountContext.Accounts.FirstOrDefault(a => a.id == accountId).Fullname, - Assigned = - x.AssignedId == accountId ? - ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) - .Where(x => x.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 - }); - 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) && + Assigned = + x.AssignedId == accountId ? + ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) + .Where(x => x.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 + }); + 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 > 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))); - } + (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.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.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.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.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.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); + if (!string.IsNullOrWhiteSpace(searchModel.IsCancelRequest)) + { + bool isCancelReq = bool.Parse(searchModel.IsCancelRequest); + res = res.Where(x => x.IsCancelRequest == isCancelReq); - } + } - var resEnum = res.AsEnumerable(); - var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); + var resEnum = res.AsEnumerable(); + var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); - if (searchModel.AccountId > 0) - { - result = result.Where(x => x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId)); - } + 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 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(); + 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)) - .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 + final = final.Select(x => new TaskViewModel() + { + AssignViewModels = _accountContext.Accounts.Include(x => x.Position).Where(a => x.Assigned.Contains(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 - }).ToList(); + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() - { - AssignViewModels = a.ToList(), - PosValue = a.Key - }).ToList() - : 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 - }).ToList(); + AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() + { + AssignViewModels = a.ToList(), + PosValue = a.Key + }).ToList() + : 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 = (!string.IsNullOrWhiteSpace(x.Description) || x.MediaCount > 0) ? true : false, + SelfName = x.SelfName, + SelfAssigned = x.SelfAssigned, + SelfAssigner = x.SelfAssigner, + Description = x.Description, + IsDoneRequest = x.IsDoneRequest + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, - Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname + AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, + Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname - }).ToList(); - return final; - } + }).ToList(); + return final; + } - public string SetTasksColors(DateTime date, bool isCancel) - { - if (isCancel) - { - return "brown"; - } - var now = DateTime.Now.Date; - if (date.Date < now) - { - return "dark"; - } - else if (date.Date == now) - { - return "red"; - } - else if (date.Date > now) - { - return "gray"; - } + public string SetTasksColors(DateTime date, bool isCancel) + { + if (isCancel) + { + return "brown"; + } + var now = DateTime.Now.Date; + if (date.Date < now) + { + return "dark"; + } + else if (date.Date == now) + { + return "red"; + } + else if (date.Date > now) + { + return "gray"; + } - return ""; + return ""; - } + } - public string SetRequestTasksColors(bool timeRequest, bool cancelRequest, bool isDoneRequest) - { - if (timeRequest) - { - return "yellow"; - } - else if (cancelRequest) - { - return "red"; - } - else if (isDoneRequest) - { - return "green"; - } - else - { - return ""; - } + public string SetRequestTasksColors(bool timeRequest, bool cancelRequest, bool isDoneRequest) + { + if (timeRequest) + { + return "yellow"; + } + else if (cancelRequest) + { + return "red"; + } + else if (isDoneRequest) + { + return "green"; + } + else + { + return ""; + } - } + } - public int GetRequestedTasksCount() - { - var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value); - var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value); - if (positionValue == 1) - { - return _accountContext.Assigns.Include(x => x.Task).Where(x => - x.Task.IsDone == false && x.Task.IsActiveString == "true" && - (x.Task.IsCanceledRequest == true || x.Task.TimeRequest == true || x.Task.IsDoneRequest)).GroupBy(x => x.TaskId) - .Select(x => x.First()).Count(); - } - else - { - return _accountContext.Assigns.Include(x => x.Task).Where(x => - x.Task.IsDone == false && x.Task.IsActiveString == "true" && - (x.Task.IsCanceledRequest == true || x.Task.TimeRequest == true || x.Task.IsDoneRequest) && (accountId == x.Task.SenderId || positionValue < x.AssignerPositionValue)).GroupBy(x => x.TaskId) - .Select(x => x.First()).Count(); - } - } + public int GetRequestedTasksCount() + { + var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value); + var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value); + if (positionValue == 1) + { + return _accountContext.Assigns.Include(x => x.Task).Where(x => + x.Task.IsDone == false && x.Task.IsActiveString == "true" && + (x.Task.IsCanceledRequest == true || x.Task.TimeRequest == true || x.Task.IsDoneRequest)).GroupBy(x => x.TaskId) + .Select(x => x.First()).Count(); + } + else + { + return _accountContext.Assigns.Include(x => x.Task).Where(x => + x.Task.IsDone == false && x.Task.IsActiveString == "true" && + (x.Task.IsCanceledRequest == true || x.Task.TimeRequest == true || x.Task.IsDoneRequest) && (accountId == x.Task.SenderId || positionValue < x.AssignerPositionValue)).GroupBy(x => x.TaskId) + .Select(x => x.First()).Count(); + } + } - public TaskViewModel GetRequestDetails(long id) - { - return _accountContext.Tasks.Where(x => x.id == id).Select(x => new TaskViewModel() - { - Id = x.id, - Name = x.Title, - ContractingPartyName = x.ContractingPartyName, - TimeRequestDescription = x.TimeRequestDescription, - CancelDescription = x.CancelDescription, - IsDoneDescription = x.DoneDescription, - IsCancelRequest = x.IsDoneRequest, - RequestTime = x.TimeRequest, - IsDoneRequest = x.IsDoneRequest, - RequestTaskDate = x.RequestDate == null ? "" : x.RequestDate.ToFarsi() - }).FirstOrDefault(); - } + public TaskViewModel GetRequestDetails(long id) + { + return _accountContext.Tasks.Where(x => x.id == id).Select(x => new TaskViewModel() + { + Id = x.id, + Name = x.Title, + ContractingPartyName = x.ContractingPartyName, + TimeRequestDescription = x.TimeRequestDescription, + CancelDescription = x.CancelDescription, + IsDoneDescription = x.DoneDescription, + IsCancelRequest = x.IsDoneRequest, + RequestTime = x.TimeRequest, + IsDoneRequest = x.IsDoneRequest, + RequestTaskDate = x.RequestDate == null ? "" : x.RequestDate.ToFarsi() + }).FirstOrDefault(); + } - public List GetSelfTasks(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 - }; + public List GetSelfTasks(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 query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) - .Where(x => - x.Task.IsActiveString == "true" && (x.AssignerId == accountId && x.AssignedId == accountId)&&(!x.Task.IsCanceledRequest && !x.Task.TimeRequest && !x.Task.IsDoneRequest)) - .Select(x => - new TaskViewModel() - { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest, + var query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) + .Where(x => + x.Task.IsActiveString == "true" && (x.AssignerId == accountId && x.AssignedId == accountId) && (!x.Task.IsCanceledRequest || !x.Task.TimeRequest || !x.Task.IsDoneRequest)) + .Select(x => + new TaskViewModel() + { + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest, - }); + }); + 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), + { + 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, + SelfName = _accountContext.Accounts.FirstOrDefault(a => a.id == accountId).Fullname, - Assigned = - x.AssignedId == accountId ? - ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) - .Where(x => x.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 - }); - 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) && + Assigned = + x.AssignedId == accountId ? + ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) + .Where(x => x.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 + }); + 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 > 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))); - } + (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.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.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.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.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.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); + if (!string.IsNullOrWhiteSpace(searchModel.IsCancelRequest)) + { + bool isCancelReq = bool.Parse(searchModel.IsCancelRequest); + res = res.Where(x => x.IsCancelRequest == isCancelReq); - } + } - var resEnum = res.AsEnumerable(); - var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); + var resEnum = res.AsEnumerable(); + var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); - if (searchModel.AccountId > 0) - { - result = result.Where(x => x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId)); - } + 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 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(); + 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)) - .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 + final = final.Select(x => new TaskViewModel() + { + AssignViewModels = _accountContext.Accounts.Include(x => x.Position).Where(a => x.Assigned.Contains(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 - }).ToList(); + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() - { - AssignViewModels = a.ToList(), - PosValue = a.Key - }).ToList() - : 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 - }).ToList(); + AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() + { + AssignViewModels = a.ToList(), + PosValue = a.Key + }).ToList() + : 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 = (!string.IsNullOrWhiteSpace(x.Description) || x.MediaCount > 0) ? true : false, + SelfName = x.SelfName, + SelfAssigned = x.SelfAssigned, + SelfAssigner = x.SelfAssigner, + Description = x.Description, + IsDoneRequest = x.IsDoneRequest + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, - Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname + AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, + Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname - }).ToList(); - return final; - } + }).ToList(); + return final; + } - public List GetAllNotSelfIncludedTasks(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 - }; + public List GetAllNotSelfIncludedTasks(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 query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) - .Where(x => - x.Task.IsActiveString == "true" && (!x.Task.IsCanceledRequest && !x.Task.TimeRequest && !x.Task.IsDoneRequest) && - x.AssignerId != accountId) - .Select(x => - new TaskViewModel() - { + var query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) + .Where(x => + x.Task.IsActiveString == "true" && (!x.Task.IsCanceledRequest || !x.Task.TimeRequest || !x.Task.IsDoneRequest) && + x.AssignerId != accountId) + .Select(x => + new TaskViewModel() + { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest, + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest, - }); + }); + 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), + { + 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, + SelfName = _accountContext.Accounts.FirstOrDefault(a => a.id == accountId).Fullname, - Assigned = - x.AssignedId == accountId ? - ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) - .Where(x => x.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 - }); - 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) && + Assigned = + x.AssignedId == accountId ? + ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) + .Where(x => x.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 + }); + 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 > 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))); - } + (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.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.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.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.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.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); + if (!string.IsNullOrWhiteSpace(searchModel.IsCancelRequest)) + { + bool isCancelReq = bool.Parse(searchModel.IsCancelRequest); + res = res.Where(x => x.IsCancelRequest == isCancelReq); - } + } - var resEnum = res.AsEnumerable(); - var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); + var resEnum = res.AsEnumerable(); + var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); - if (searchModel.AccountId > 0) - { - result = result.Where(x => x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId)); - } + 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 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(); + 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)) - .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 + final = final.Select(x => new TaskViewModel() + { + AssignViewModels = _accountContext.Accounts.Include(x => x.Position).Where(a => x.Assigned.Contains(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 - }).ToList(); + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() - { - AssignViewModels = a.ToList(), - PosValue = a.Key - }).ToList() - : 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 - }).ToList(); + AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() + { + AssignViewModels = a.ToList(), + PosValue = a.Key + }).ToList() + : 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 + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, - Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname + AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, + Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname - }).ToList(); - return final; + }).ToList(); + return final; - } + } - public List GetReceivedTasks(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 - }; + public List GetReceivedTasks(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 query = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) - .Where(x => - x.Task.IsActiveString == "true" && x.AssignedId == accountId&&(!x.Task.IsCanceledRequest && !x.Task.TimeRequest && !x.Task.IsDoneRequest)) - .Select(x => - new TaskViewModel() - { - AssignedId = x.AssignedId, - AssignerId = x.AssignerId, - CreateDate = x.Task.CreationDate.ToFarsi(), - EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), - IsDone = x.Task.IsDone, - EndTaskDateGE = x.Task.EndTaskDate, - Name = x.Task.Title, - RequestCancel = x.Task.IsCanceledRequest, - RequestTime = x.Task.TimeRequest, - Id = x.Task.id, - CreateTaskDateGE = x.Task.CreationDate, - IsCancel = x.Task.IsCancel, - AcceptedTimeRequest = x.Task.AcceptedTimeRequest, - IsCancelRequest = x.Task.IsCanceledRequest, - ContractingPartyName = x.Task.ContractingPartyName, - MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), - Description = x.Task.Description, - IsDoneRequest = x.Task.IsDoneRequest, + var raw = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media) + .Where(x => + x.Task.IsActiveString == "true" && x.AssignedId == accountId && (!x.Task.IsCanceledRequest || !x.Task.TimeRequest || !x.Task.IsDoneRequest)); + 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.Select(x => + new TaskViewModel() + { + AssignedId = x.AssignedId, + AssignerId = x.AssignerId, + CreateDate = x.Task.CreationDate.ToFarsi(), + EndTaskDateFA = x.Task.EndTaskDate.ToFarsi(), + IsDone = x.Task.IsDone, + EndTaskDateGE = x.Task.EndTaskDate, + Name = x.Task.Title, + RequestCancel = x.Task.IsCanceledRequest, + RequestTime = x.Task.TimeRequest, + Id = x.Task.id, + CreateTaskDateGE = x.Task.CreationDate, + IsCancel = x.Task.IsCancel, + AcceptedTimeRequest = x.Task.AcceptedTimeRequest, + IsCancelRequest = x.Task.IsCanceledRequest, + ContractingPartyName = x.Task.ContractingPartyName, + MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id), + Description = x.Task.Description, + IsDoneRequest = x.Task.IsDoneRequest, + + }); + 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), + { + 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, + SelfName = _accountContext.Accounts.FirstOrDefault(a => a.id == accountId).Fullname, - Assigned = - x.AssignedId == accountId ? - ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) - .Where(x => x.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 - }); - 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) && + Assigned = + x.AssignedId == accountId ? + ExtraTools.AddAccountIdToList(_accountContext.Assigns.Where(a => a.TaskId == x.Id && a.AssignerId == accountId).Select(a => a.AssignedId).ToList(), accountId) : _accountContext.Assigns.Where(a => a.TaskId == x.Id) + .Where(x => x.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 + }); + 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 > 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))); - } + (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.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.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.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.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.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); + if (!string.IsNullOrWhiteSpace(searchModel.IsCancelRequest)) + { + bool isCancelReq = bool.Parse(searchModel.IsCancelRequest); + res = res.Where(x => x.IsCancelRequest == isCancelReq); - } + } - var resEnum = res.AsEnumerable(); - var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); - if (searchModel.AccountId > 0) - { - result = result.Where(x => x.Sender.Id == searchModel.AccountId || x.Assigned.Contains(searchModel.AccountId)); - } + var resEnum = res.AsEnumerable(); + var result = resEnum.GroupBy(x => x.Id).Select(x => x.First()); + + 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 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(); + 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)) - .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 + final = final.Select(x => new TaskViewModel() + { + AssignViewModels = _accountContext.Accounts.Include(x => x.Position).Where(a => x.Assigned.Contains(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 - }).ToList(); + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() - { - AssignViewModels = a.ToList(), - PosValue = a.Key - }).ToList() - : 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 - }).ToList(); + AssignList = !x.SelfAssigned && !x.SelfAssigner ? x.AssignViewModels.GroupBy(a => a.AssignedPositionValue).Select(a => new AssignList() + { + AssignViewModels = a.ToList(), + PosValue = a.Key + }).ToList() + : 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 = (!string.IsNullOrWhiteSpace(x.Description) || x.MediaCount > 0) ? true : false, + SelfName = x.SelfName, + SelfAssigned = x.SelfAssigned, + SelfAssigner = x.SelfAssigner, + Description = x.Description, + IsDoneRequest = x.IsDoneRequest + }).ToList(); - final = final.Select(x => new TaskViewModel() - { + final = final.Select(x => new TaskViewModel() + { - AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, - Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname + AssignList = !(x.SelfAssigned || x.SelfAssigner) ? ExtraTools.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, + Assigner = x.Sender.Id == accountId ? emptyAcc.Fullname : x.Sender.Fullname - }).ToList(); - return final; - } + }).ToList(); + return final; + } } @@ -1794,29 +1849,29 @@ public class TaskRepository : RepositoryBase, ITaskRepository public static class ExtraTools { - public static List AddAssign(List list, AccountViewModel acc) - { - list.Add(new AssignList() - { - AssignViewModels = new List() - { - new () - { - AssignedName = acc.Fullname, - AssignedPositionValue = acc.PositionValue - }, - }.ToList(), - PosValue = acc.PositionValue - }); - return list; + public static List AddAssign(List list, AccountViewModel acc) + { + list.Add(new AssignList() + { + AssignViewModels = new List() + { + new () + { + AssignedName = acc.Fullname, + AssignedPositionValue = acc.PositionValue + }, + }.ToList(), + PosValue = acc.PositionValue + }); + return list; - } + } - public static List AddAccountIdToList(List list, long accountId) - { - list.Add(accountId); - return list; - } + public static List AddAccountIdToList(List list, long accountId) + { + list.Add(accountId); + return list; + } } \ No newline at end of file diff --git a/AccountMangement.Infrastructure.EFCore/Repository/TaskSubjectRepository.cs b/AccountMangement.Infrastructure.EFCore/Repository/TaskSubjectRepository.cs index 8f6b0c83..2fc48572 100644 --- a/AccountMangement.Infrastructure.EFCore/Repository/TaskSubjectRepository.cs +++ b/AccountMangement.Infrastructure.EFCore/Repository/TaskSubjectRepository.cs @@ -22,11 +22,12 @@ public class TaskSubjectRepository:RepositoryBase, ITaskSubjec Id = x.id, Subject = x.Subject }); - if (!string.IsNullOrWhiteSpace(search)) - { - res = res.Where(x => x.Subject.Contains(search)); - } + //if (!string.IsNullOrWhiteSpace(search)) + //{ + // res = res.Where(x => x.Subject.Contains(search)); + //} + return res.ToList(); } diff --git a/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs b/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs index 60c22c0a..b24149e3 100644 --- a/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs +++ b/Company.Domain/ContarctingPartyAgg/IPersonalContractingPartyRepository.cs @@ -14,13 +14,13 @@ public interface IPersonalContractingPartyRepository :IRepository Search(PersonalContractingPartySearchModel searchModel2); int GetLastArchiveCode(); - #region Mahan + #region Mahan - List SearchByName(string name); - #endregion - #region ForClient + List SearchByName(string name); + #endregion + #region ForClient - ContractingPartyAndStatmentIdViewModel GetContractingpartyIdByAccountId(long accountId); + ContractingPartyAndStatmentIdViewModel GetContractingpartyIdByAccountId(long accountId); #endregion #region NewByHeydari diff --git a/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs b/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs index 862be0dc..971aa982 100644 --- a/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs +++ b/CompanyManagment.App.Contracts/PersonalContractingParty/IPersonalContractingPartyApp.cs @@ -22,12 +22,12 @@ public interface IPersonalContractingPartyApp List Search(PersonalContractingPartySearchModel searchModel2); int GetLastArchiveCode(); - #region Mahan - List SearchByName(string name); - #endregion - #region ForClient + #region Mahan + List SearchByName(string name); + #endregion + #region ForClient - ContractingPartyAndStatmentIdViewModel GetContractingpartyIdByAccountId(long accountId); + ContractingPartyAndStatmentIdViewModel GetContractingpartyIdByAccountId(long accountId); #endregion diff --git a/CompanyManagment.Application/PersonalContractingPartyApplication.cs b/CompanyManagment.Application/PersonalContractingPartyApplication.cs index 95987182..ec919574 100644 --- a/CompanyManagment.Application/PersonalContractingPartyApplication.cs +++ b/CompanyManagment.Application/PersonalContractingPartyApplication.cs @@ -370,13 +370,13 @@ public class PersonalContractingPartyApplication : IPersonalContractingPartyApp { return _personalContractingPartyRepository2.GetLastArchiveCode(); } - #region Mahan - public List SearchByName(string name) - { - return _personalContractingPartyRepository2.SearchByName(name); - } - #endregion - public ContractingPartyAndStatmentIdViewModel GetContractingpartyIdByAccountId(long accountId) + #region Mahan + public List SearchByName(string name) + { + return _personalContractingPartyRepository2.SearchByName(name); + } + #endregion + public ContractingPartyAndStatmentIdViewModel GetContractingpartyIdByAccountId(long accountId) { return _personalContractingPartyRepository2.GetContractingpartyIdByAccountId(accountId); } diff --git a/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs b/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs index 10cefc44..3b90b0b9 100644 --- a/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs +++ b/CompanyManagment.EFCore/Repository/PersonalContractingPartyRepository.cs @@ -229,20 +229,20 @@ public class PersonalContractingPartyRepository : RepositoryBase SearchByName(string name) - { - var contractingParties = _context.PersonalContractingParties.Select(x => new PersonalContractingPartyViewModel() - { - FullName = x.IsLegal == "حقوقی" ? x.LName : $"{x.FName} {x.LName}" - }).ToList(); - return contractingParties.Where(x => x.FullName.Contains(name)).Take(200).ToList(); - } - #endregion + #region Mahan + public List SearchByName(string name) + { + var contractingParties = _context.PersonalContractingParties.Select(x => new PersonalContractingPartyViewModel() + { + FullName = x.IsLegal == "حقوقی" ? x.LName : $"{x.FName} {x.LName}" + }).ToList(); + return contractingParties.Select(x => x.FullName).ToList(); + } + #endregion - #region NewByHeydari - public List GetPersonalContractingPartiesForNationalcode(string searchText) + #region NewByHeydari + public List GetPersonalContractingPartiesForNationalcode(string searchText) { var result = _context.PersonalContractingParties.Where(x => (!string.IsNullOrEmpty(x.Nationalcode) && x.Nationalcode.StartsWith(searchText)) ) .Select(x => new PersonalContractingPartyViewModel diff --git a/ServiceHost/Areas/AdminNew/Pages/Company/Task/Create.cshtml b/ServiceHost/Areas/AdminNew/Pages/Company/Task/Create.cshtml index 8ce17912..def3277a 100644 --- a/ServiceHost/Areas/AdminNew/Pages/Company/Task/Create.cshtml +++ b/ServiceHost/Areas/AdminNew/Pages/Company/Task/Create.cshtml @@ -8,9 +8,9 @@ @section Styles { - - - + + + }
@@ -43,13 +43,13 @@
-
- +
+
-
+
- @foreach (var item in Model.AccountsList) @@ -68,7 +68,7 @@