337 lines
18 KiB
Plaintext
337 lines
18 KiB
Plaintext
@model AccountManagement.Application.Contracts.Task.OperationModalViewModel
|
|
@using System.Security.Claims
|
|
@using AccountManagement.Application.Contracts.Media
|
|
|
|
@{
|
|
string adminVersion = _0_Framework.Application.Version.AdminVersion;
|
|
|
|
MediaViewModel voice = null;
|
|
var userId = Convert.ToInt64(User.FindFirstValue("AccountId"));
|
|
|
|
string svgName = "unknow";
|
|
string[] fileExtensions = new string[]
|
|
{
|
|
".ai", ".avi", ".bmp", ".crd", ".csv", ".dll", ".doc", ".docx", ".dwg",
|
|
".eps", ".exe", ".flv", ".giff", ".html", ".iso", ".java", ".jpg", ".mdb",
|
|
".mid", ".mov", ".mp3", ".mp4", ".mpeg", ".pdf", ".png", ".ppt", ".ps",
|
|
".psd", ".pub", ".rar", ".raw", ".rss", ".svg", ".tiff", ".txt", ".wav",
|
|
".wma", ".xml", ".xsl", ".zip"
|
|
};
|
|
int i = 1;
|
|
|
|
<script src="~/AssetsClient/js/jquery-ui.js"></script>
|
|
<link href="~/assetsadminnew/tasks/css/task-manager-create.css?ver=@adminVersion" rel="stylesheet" />
|
|
<link href="~/AssetsClient/css/select2.css?ver=@adminVersion" rel="stylesheet" />
|
|
<link href="~/assetsadminnew/tasks/css/operationrequestmodal.css?ver=@adminVersion" rel="stylesheet" />
|
|
<link href="~/assetsadminnew/tasks/css/detailmodal.css?ver=@adminVersion" rel="stylesheet" />
|
|
|
|
|
|
if (Model.TaskDetails.AssignViewModels?.Count > 1)
|
|
{
|
|
<style>
|
|
.modal-xl-taskTime {
|
|
max-width: 720px;
|
|
}
|
|
</style>
|
|
}
|
|
else
|
|
{
|
|
<style>
|
|
.modal-xl-taskTime {
|
|
max-width: 500px;
|
|
}
|
|
</style>
|
|
}
|
|
}
|
|
|
|
<div class="modal-content">
|
|
|
|
<div class="modal-header d-block text-center header-custom-color">
|
|
<button type="button" class="btn-close position-absolute text-start" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
<div class="topColor"></div>
|
|
|
|
<div class="row">
|
|
<div class="col-5 col-md-4 text-start">
|
|
<h6 class="modal-title" style="margin: 0 38px 0 0;">جزئیات وظیفه</h6>
|
|
</div>
|
|
<div class="col-6 col-md-4">
|
|
<h6 class="modal-title" id="AssignTaskName">
|
|
@(Model.TaskDetails.AssignViewModels.Count() == 1 ? Model.TaskDetails.AssignViewModels.First().AssignedName : "کل درخواستها")
|
|
</h6>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal-body p-2" style="overflow-y: auto;">
|
|
<div class="container-fluid">
|
|
|
|
<div class="row">
|
|
<div id="assignsSection" class="pe-0 @(Model.TaskDetails.AssignViewModels?.Count > 0 && Model.TaskDetails.AssignViewModels?.Count != 1 ? "col-12 col-md-3" : "d-none")">
|
|
<div class="assigns_section">
|
|
@* @if (Model.TaskDetails.AssignViewModels?.Count > 0 && Model.TaskDetails.AssignViewModels?.Count != 1)
|
|
{ *@
|
|
<button type="button" class="btnAssignList blue active" onclick="showAllRequestAction()">
|
|
<span>
|
|
کل درخواستها
|
|
</span>
|
|
<span>
|
|
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<path d="M14.25 2.25V2.25C15.0784 2.25 15.75 2.92157 15.75 3.75V11.37C15.75 12.3781 15.75 12.8821 15.5538 13.2672C15.3812 13.6059 15.1059 13.8812 14.7672 14.0538C14.3821 14.25 13.8781 14.25 12.87 14.25H5.13C4.12191 14.25 3.61786 14.25 3.23282 14.0538C2.89413 13.8812 2.61876 13.6059 2.44619 13.2672C2.25 12.8821 2.25 12.3781 2.25 11.37V3.75C2.25 2.92157 2.92157 2.25 3.75 2.25V2.25" stroke="#33363F" stroke-width="1.5"/>
|
|
<path d="M14.25 2.25H13.5885C13.3755 2.25 13.269 2.25 13.1718 2.26944C12.9366 2.31652 12.7261 2.44661 12.5787 2.63598C12.5179 2.71418 12.4703 2.80945 12.375 3V3C12.2797 3.19055 12.2321 3.28582 12.1713 3.36402C12.0239 3.55339 11.8134 3.68348 11.5782 3.73056C11.481 3.75 11.3745 3.75 11.1615 3.75H6.6875C6.54734 3.75 6.47727 3.75 6.4134 3.74174C6.10422 3.70175 5.83138 3.51986 5.67555 3.24984C5.64336 3.19406 5.61641 3.12938 5.5625 3V3C5.50859 2.87062 5.48164 2.80594 5.44945 2.75016C5.29362 2.48014 5.02078 2.29825 4.7116 2.25826C4.64774 2.25 4.57766 2.25 4.4375 2.25H3.75" stroke="#33363F" stroke-width="1.5"/>
|
|
<path d="M15.75 6H13.5885C13.3755 6 13.269 6 13.1718 6.01944C12.9366 6.06652 12.7261 6.19661 12.5787 6.38598C12.5179 6.46418 12.4703 6.55945 12.375 6.75V6.75C12.2797 6.94055 12.2321 7.03582 12.1713 7.11402C12.0239 7.30339 11.8134 7.43348 11.5782 7.48056C11.481 7.5 11.3745 7.5 11.1615 7.5H6.6875C6.54734 7.5 6.47727 7.5 6.4134 7.49174C6.10422 7.45175 5.83138 7.26986 5.67555 6.99984C5.64336 6.94406 5.61641 6.87938 5.5625 6.75V6.75C5.50859 6.62062 5.48164 6.55594 5.44945 6.50016C5.29362 6.23014 5.02078 6.04825 4.7116 6.00826C4.64774 6 4.57766 6 4.4375 6H2.25" stroke="#33363F" stroke-width="1.5"/>
|
|
<path d="M15.75 9.75H13.5885C13.3755 9.75 13.269 9.75 13.1718 9.76944C12.9366 9.81652 12.7261 9.94661 12.5787 10.136C12.5179 10.2142 12.4703 10.3095 12.375 10.5V10.5C12.2797 10.6905 12.2321 10.7858 12.1713 10.864C12.0239 11.0534 11.8134 11.1835 11.5782 11.2306C11.481 11.25 11.3745 11.25 11.1615 11.25H6.6875C6.54734 11.25 6.47727 11.25 6.4134 11.2417C6.10422 11.2018 5.83138 11.0199 5.67555 10.7498C5.64336 10.6941 5.61641 10.6294 5.5625 10.5V10.5C5.50859 10.3706 5.48164 10.3059 5.44945 10.2502C5.29362 9.98014 5.02078 9.79825 4.7116 9.75826C4.64774 9.75 4.57766 9.75 4.4375 9.75H2.25" stroke="#33363F" stroke-width="1.5"/>
|
|
</svg>
|
|
</span>
|
|
</button>
|
|
@foreach (var assign in Model.TaskDetails.AssignViewModels!)
|
|
{
|
|
var btnColor = string.Empty;
|
|
var svgCode = string.Empty;
|
|
@if (assign.IsCanceledRequest)
|
|
{
|
|
btnColor = "red";
|
|
svgCode = @"
|
|
<svg width='19' height='19' viewBox='0 0 19 19' fill='none' xmlns='http://www.w3.org/2000/svg'>
|
|
<path d='M14.25 4.75L4.75 14.25' stroke='#EF4444' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/>
|
|
<path d='M4.75 4.75L14.25 14.25' stroke='#EF4444' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/>
|
|
</svg>";
|
|
}
|
|
else if (assign.TimeRequest)
|
|
{
|
|
btnColor = "orange";
|
|
svgCode = @"
|
|
<svg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'>
|
|
<path d='M4.05025 4.05025C2.9051 5.1954 2.19245 6.70219 2.03371 8.31388C1.87497 9.92557 2.27997 11.5424 3.17971 12.889C4.07945 14.2355 5.41825 15.2285 6.96801 15.6986C8.51776 16.1687 10.1826 16.0869 11.6788 15.4672C13.175 14.8474 14.41 13.728 15.1734 12.2998C15.9369 10.8715 16.1814 9.22274 15.8655 7.63437C15.5496 6.046 14.6926 4.61632 13.4408 3.58893C12.1889 2.56154 10.6195 2 9 2' stroke='#EAB308' stroke-width='2' stroke-linecap='round'/>
|
|
<path d='M9 9L4.5 4.5' stroke='#EAB308' stroke-width='2' stroke-linecap='round'/>
|
|
<path d='M9 2.25V3.75' stroke='#EAB308' stroke-width='2' stroke-linecap='round'/>
|
|
<path d='M15.75 9L14.25 9' stroke='#EAB308' stroke-width='2' stroke-linecap='round'/>
|
|
<path d='M9 14.25V15.75' stroke='#EAB308' stroke-width='2' stroke-linecap='round'/>
|
|
<path d='M3.75 9L2.25 9' stroke='#EAB308' stroke-width='2' stroke-linecap='round'/>
|
|
</svg>";
|
|
}
|
|
else if (assign.IsDoneRequest)
|
|
{
|
|
btnColor = "green";
|
|
svgCode = @"
|
|
<svg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'>
|
|
<path d='M3.75 10.5L5.98309 12.1748C6.41178 12.4963 7.01772 12.4228 7.35705 12.0081L13.5 4.5' stroke='#84CC16' stroke-width='2' stroke-linecap='round'/>
|
|
</svg>";
|
|
}
|
|
|
|
<button type="button" id="btnAssignList" class="btnAssignList @btnColor" data-id="@assign.Id" onclick="loadChatMessageRequest(@assign.Id)">
|
|
<span id="AssignedName_@assign.Id">
|
|
@assign.AssignedName
|
|
</span>
|
|
<span>
|
|
@Html.Raw(svgCode)
|
|
</span>
|
|
</button>
|
|
}
|
|
@* } *@
|
|
</div>
|
|
</div>
|
|
|
|
<div id="chatSection" class="@(Model.TaskDetails.AssignViewModels?.Count > 0 && Model.TaskDetails.AssignViewModels?.Count != 1 ? "col-12 col-md-9" : "col-12") p-0">
|
|
<div class="chat-section">
|
|
<div class="chat-card-main" style="height: 175px;position: sticky;top: 5px;z-index: 40;">
|
|
<div class="row">
|
|
<div class="col-6">
|
|
<h6 class="taskTitle text-start row align-items-center mb-1">
|
|
<span class="col-5 col-md-4 p-0">طرف حساب:</span>
|
|
<span class="taskTitleSub col-7 col-md-8">@Model.TaskDetails.ContractingPartyName</span>
|
|
</h6>
|
|
<h6 class="taskTitle text-start row align-items-center">
|
|
<span class="col-5 col-md-4 p-0">عنوان وظیفه:</span>
|
|
<span class="taskTitleSub col-7 col-md-8">@Model.TaskDetails.Title</span>
|
|
</h6>
|
|
</div>
|
|
<div class="col-6">
|
|
<h6 class="taskTitle text-end row align-items-center mb-1">
|
|
<span class="col-6 col-md-5 ps-0">تاریخ ایجاد:</span>
|
|
<span class="taskTitleSub text-center col-6 col-md-7 justify-content-center">@Model.TaskDetails.CreateDateFa</span>
|
|
</h6>
|
|
<h6 class="taskTitle text-end row align-items-center">
|
|
<span class="col-6 col-md-5 ps-0">تاریخ سررسید:</span>
|
|
<span class="@(Model.TaskDetails.AssignViewModels?.First() != null ? "" : "taskTitleSub") text-center col-6 col-md-7 justify-content-center" id="AssignEndTaskDateFa">@Model.TaskDetails.AssignViewModels?.First().EndTaskDateFa</span>
|
|
</h6>
|
|
</div>
|
|
</div>
|
|
@if (!String.IsNullOrWhiteSpace(Model.TaskDetails.Description))
|
|
{
|
|
<div class="taskTitle">توضیحات :</div>
|
|
<div class="taskDesc">
|
|
<div class="taskDescText" id="taskDescText">
|
|
@Html.Raw(Model.TaskDetails.Description)
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
@if (Model.TaskDetails.medias.Count > 0)
|
|
{
|
|
@foreach (var item in Model.TaskDetails.medias)
|
|
{
|
|
if (item.Category == "صوت")
|
|
{
|
|
voice = item;
|
|
<div id="waveArea" class="align-items-center" style="width: 100%; padding: 5px; @(voice == null ? "display: none" : "");">
|
|
<div class="audio-player">
|
|
<div id="waveform" class="waveform"></div>
|
|
<button id="play-pause" class="player-btn play"></button>
|
|
</div>
|
|
</div>
|
|
}
|
|
}
|
|
|
|
<div class="d-flex align-items-center justify-content-end">
|
|
|
|
@foreach (var item in Model.TaskDetails.medias)
|
|
{
|
|
if (item.Category == "فایل")
|
|
{
|
|
string fileName = System.IO.Path.GetFileName(item.Path);
|
|
string extension = System.IO.Path.GetExtension(fileName);
|
|
string nameWithoutExtension = fileName.Substring(0, fileName.LastIndexOf("."));
|
|
int maxLength = 20 - extension.Length;
|
|
int sliceLength = Math.Max((maxLength - 3) / 2, 0);
|
|
|
|
string start = nameWithoutExtension.Substring(0, Math.Min(sliceLength, nameWithoutExtension.Length));
|
|
string end = nameWithoutExtension.Substring(Math.Max(nameWithoutExtension.Length - sliceLength, 0));
|
|
|
|
var inBox = "inBox" + i;
|
|
@if (item.Path.EndsWith(".jpg") || item.Path.EndsWith(".jpeg") || item.Path.EndsWith(".png") || item.Path.EndsWith(".gif") || item.Path.EndsWith(".webp"))
|
|
{
|
|
<div class="upload-box empty inBox@(i)">
|
|
<section class="gallery">
|
|
<section class="container">
|
|
<div class="row p-0">
|
|
<div class="lightbox_img_wrap">
|
|
<img class="lightbox-enabled min-img" src="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" data-imgsrc="@Url.Page("./Index", "ShowPicture", new { filePath = item.Path })" id="@Model.TaskDetails.Id" />
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
<section class="lightbox-container">
|
|
|
|
<span class="material-symbols-outlined material-icons lightbox-btn left" id="left">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 19.5 8.25 12l7.5-7.5" />
|
|
</svg>
|
|
</span>
|
|
<span class="material-symbols-outlined material-icons lightbox-btn right" id="right">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="m8.25 4.5 7.5 7.5-7.5 7.5" />
|
|
</svg>
|
|
</span>
|
|
<span id="close" class="close material-icons material-symbols-outlined">
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
|
|
</svg>
|
|
</span>
|
|
<div class="lightbox-image-wrapper">
|
|
<img alt="lightboximage" class="lightbox-image">
|
|
|
|
</div>
|
|
</section>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
if (fileExtensions.Contains(extension))
|
|
{
|
|
svgName = extension.TrimStart('.').ToLower();
|
|
<a href="@Url.Page("./Index", "GetFile", new { filePath = item.Path, id = Model.TaskDetails.Id })"><img class="uploaded-file" src="/common/filesvg/@(svgName).svg" /></a>
|
|
}
|
|
else
|
|
{
|
|
<a href="@Url.Page("./Index", "GetFile", new { filePath = item.Path, id = Model.TaskDetails.Id })"><img class="uploaded-file" src="/common/filesvg/unknow.svg" /></a>
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
</div>
|
|
}
|
|
|
|
<div class="row">
|
|
<div></div>
|
|
|
|
<span class="col-2" style="font-size: 11px; line-height: 22px;">@Model.TaskDetails.CreateDateFa</span>
|
|
<button class="taskDescMore col-8" id="showMoreButton">
|
|
<svg width="20px" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-6">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/>
|
|
</svg>
|
|
|
|
</button>
|
|
<span class="col-2"></span>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="mainChat" class="mainChat">
|
|
<div id="LoadingCard">
|
|
<div class="px-2">
|
|
@for (int j = 0; j < 4; j++)
|
|
{
|
|
bool isOdd = j % 2 != 0;
|
|
string marginStyle = isOdd ? "margin-right: auto;" : "margin-left: auto;";
|
|
|
|
<div class="skeleton-loader" style="height: 90px; width: 330px; @marginStyle"></div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
<div id="ajaxChatSection">
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal-footer justify-content-center align-items-center p-2 pt-0">
|
|
<div class="row">
|
|
<div class="col-6 text-end">
|
|
<button type="button" class="btn-cancel2 d-flex align-items-center justify-content-center" data-bs-dismiss="modal">بستن</button>
|
|
</div>
|
|
@if (!Model.TaskDetails.IsDone)
|
|
{
|
|
<div class="col-6 text-start">
|
|
<button id="save" type="button" class="btn-register text-white disable">ارسال</button>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="~/assetsclient/libs/jalaali-js/jalaali.js"></script>
|
|
<script src="~/assetsclient/js/site.js"></script>
|
|
<script src="~/admintheme/js/jquery.mask_1.14.16.min.js"></script>
|
|
<script src="~/AssetsAdminNew/libs/wavesurfer/wavesurfer.min.js"></script>
|
|
<script>
|
|
var antiForgeryToken = $('@Html.AntiForgeryToken()').val();
|
|
var createSaveTaskAjax = '@Url.Page("/Company/Task/Create", "CreateSaveTask")';
|
|
var AntiForgeryToken = $('@Html.AntiForgeryToken()').val();
|
|
var changeTime = '@Url.Page("./Index", "ChangeTime")';
|
|
var AcceptTimeRequest = '@Url.Page("./Index", "AcceptTimeRequest")';
|
|
var RejectTimeRequest = '@Url.Page("./Index", "RejectTimeRequest")';
|
|
var RejectCancel = '@Url.Page("./Index", "RejectCancel")';
|
|
// var loadTicketAndCountCountAjax = "@Url.Page("./Index", "RequestCount")";
|
|
var AcceptCancel = '@Url.Page("./Index", "AcceptCancel")';
|
|
var RejectComplete = '@Url.Page("./Index", "RejectComplete")';
|
|
var AcceptComplete = '@Url.Page("./Index", "AcceptComplete")';
|
|
var taskId = Number(@Model.TaskDetails.Id);
|
|
var UserId = @User.FindFirstValue("AccountId");
|
|
var loadChatMessageAjax = '@Url.Page("./Index", "ChatMessageDetailsTask")';
|
|
var loadOperationRequestTaskDetailsAjax = '@Url.Page("./Index", "OperationRequestTaskDetailsAjax")';
|
|
var voiceSrc = '@(voice == null ? "" : @Url.Page("./Index", "ShowVoice", new { filePath = voice?.Path }))';
|
|
|
|
var btnAllRequestActive = @(Model.TaskDetails.AssignViewModels?.Count == 1 ? "true" : "false");
|
|
var CountAssignViewModel = @(Model.TaskDetails.AssignViewModels?.Count);
|
|
</script>
|
|
<script src="~/assetsadminnew/tasks/js/operationrequestmodal.js?ver=@adminVersion"></script>
|
|
<script src="~/assetsadminnew/tasks/js/detailmodal.js?ver=@adminVersion"></script>
|