view ticket

This commit is contained in:
mmrbnjd
2024-05-02 20:18:26 +03:30
parent ae11303b04
commit 53df2004a5
7 changed files with 220 additions and 365 deletions

View File

@@ -6,13 +6,6 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Common\DTOs\**" />
<Content Remove="Common\DTOs\**" />
<EmbeddedResource Remove="Common\DTOs\**" />
<None Remove="Common\DTOs\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Melipayamak.RestClient" Version="1.0.0" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
@@ -31,13 +24,17 @@
</PackageReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Common\DTOs\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Service">
<HintPath>..\..\..\LocalGit\TaxPayerTools\Service\bin\Debug\Service.dll</HintPath>
<HintPath>..\..\Dlls\Service.dll</HintPath>
</Reference>
</ItemGroup>

View File

@@ -29,12 +29,11 @@ namespace Back.Features
{
servUser _servUser = (servUser)httpContext.RequestServices.GetService(typeof(servUser));
var user = _servUser.GetUserByUserID(UserID).Result;
if (user.Token==accessToken)
if (user != null && user.Token==accessToken)
await _next(httpContext);
else
{
httpContext.Response.StatusCode = StatusCodes.Status401Unauthorized;
}
}
}
}

View File

@@ -0,0 +1,81 @@
@using Shared.DTOs
<Modal @ref="modal" title="Modal title" IsVerticallyCentered="true">
<BodyTemplate>
<div class="col-md-1">
This is a vertically centered modal.
</div>
</BodyTemplate>
<FooterTemplate>
<Button Color="ButtonColor.Secondary" @onclick="OnHideModalClick">Close</Button>
<Button Color="ButtonColor.Primary">Save changes</Button>
</FooterTemplate>
</Modal>
<li class="list-group-item" data-toggle="modal" data-target="#issue">
<div class="row">
<div class="col-md-1">
<a style="cursor:pointer" @onclick="OnShowModalClick"><br />#@Ticket.TicketID</a>
</div>
<div class="col-md-5">
<h6 style="cursor:pointer; color: #4793AF;" @onclick="OnShowModalClick">@Ticket.Title</h6>
<Badge Color="@badgeColor" IndicatorType="BadgeIndicatorType.RoundedPill">@Ticket.MsgStatus</Badge>
</div>
<div style="text-align:center;" class="col-md-2">
<p>تاریخ شروع <br /> @Ticket.CreateDate</p>
</div>
@if (!string.IsNullOrEmpty(Ticket.EndDate))
{
<div style="text-align:center;" class="col-md-2">
<p>تاریخ پایان <br /> @Ticket.EndDate</p>
</div>
}
</div>
</li>
@code {
[Parameter]
public TicketDTO Ticket { get; set; }
public BadgeColor badgeColor = BadgeColor.Light;
protected override async Task OnParametersSetAsync()
{
switch (Ticket.Status)
{
case StatusTicket.Awaitingreview:
badgeColor = BadgeColor.Warning;
break;
case StatusTicket.Read_Checking:
badgeColor = BadgeColor.Primary;
break;
case StatusTicket.hasbeenanswered:
badgeColor = BadgeColor.Success;
break;
case StatusTicket.End:
badgeColor = BadgeColor.Secondary;
break;
case StatusTicket.optout:
badgeColor = BadgeColor.Danger;
break;
default:
badgeColor = BadgeColor.Light;
break;
}
await base.OnParametersSetAsync();
}
//-----------
private Modal modal = default!;
private async Task OnShowModalClick()
{
await modal.ShowAsync();
}
private async Task OnHideModalClick()
{
await modal.HideAsync();
}
}

View File

@@ -68,7 +68,9 @@
<ItemBlog Item="request.list[i]" />
}
</div>
<nav aria-label="Page navigation">
<br />
<ul class="pagination justify-content-center">
@for (int page = 1; page <= request?.PageCount; page++)
{

View File

@@ -1,102 +1,142 @@
@page "/Ticket"
@using Front.Services
@using Shared.DTOs
@using Shared.DTOs.Serch
@layout PanelLayout
@inject HttpClientController hc;
<div class="container-xxl flex-grow-1 container-p-y">
<div class="container">
<div class="row clearfix">
<div class="col-lg-12">
<div class="card chat-app">
<div id="plist" class="people-list">
<ul class="list-unstyled chat-list mt-2 mb-0">
<li class="clearfix">
<img src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="avatar">
<div class="about">
<div class="name">Vincent Porter</div>
<div class="status"> <i class="fa fa-circle offline"></i> left 7 mins ago </div>
</div>
</li>
<li class="clearfix active">
<img src="https://bootdey.com/img/Content/avatar/avatar2.png" alt="avatar">
<div class="about">
<div class="name">Aiden Chavez</div>
<div class="status"> <i class="fa fa-circle online"></i> online </div>
</div>
</li>
<li class="clearfix">
<img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt="avatar">
<div class="about">
<div class="name">Mike Thomas</div>
<div class="status"> <i class="fa fa-circle online"></i> online </div>
</div>
</li>
<li class="clearfix">
<img src="https://bootdey.com/img/Content/avatar/avatar7.png" alt="avatar">
<div class="about">
<div class="name">Christian Kelly</div>
<div class="status"> <i class="fa fa-circle offline"></i> left 10 hours ago </div>
</div>
</li>
<li class="clearfix">
<img src="https://bootdey.com/img/Content/avatar/avatar8.png" alt="avatar">
<div class="about">
<div class="name">Monica Ward</div>
<div class="status"> <i class="fa fa-circle online"></i> online </div>
</div>
</li>
<li class="clearfix">
<img src="https://bootdey.com/img/Content/avatar/avatar3.png" alt="avatar">
<div class="about">
<div class="name">Dean Henry</div>
<div class="status"> <i class="fa fa-circle offline"></i> offline since Oct 28 </div>
</div>
</li>
</ul>
</div>
<div class="chat">
<div class="chat-header clearfix">
<h4 class="fw-bold py-3 mb-4">
<span class="text-muted fw-light">متفرقه /</span> پشتیبانی
</h4>
<div class="row">
<div class="col">
<div class="chat-about">
<h6 class="m-b-0">Aiden Chavez</h6>
<Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
<Icon Name="@alertIconName" class="me-2"></Icon>
@alertMessage
</Alert>
</div>
<div class="row">
<div class="col-md-6">
<div class="card mb-4">
<h5 class="card-header">تیکت ها</h5>
<div class="row">
<div class="col-md-12">
<ul class="list-group fa-padding" style="border: 2px solid #0d6efd">
<li class="list-group-item" data-toggle="modal" data-target="#issue">
<div class="row g-3">
<div class="col-md-2">
<InputText @bind-Value="TicketID" placeholder="شناسه" style="text-align:center;" class="form-control" type="text" id="EconomicCode" />
</div>
<div class="col-md-6">
<InputText style="text-align:center;" placeholder="عنوان" @bind-Value="Title" class="form-control" type="text" id="UniqeMemory" />
</div>
<div class="col-auto">
<button type="submit" onclick="@Submit" class="btn btn-primary">جستجو</button>
</div>
<div class="col-auto">
<button type="submit" onclick="@Submit" class="btn btn-primary">جدید</button>
</div>
</div>
<div class="chat-history">
<ul class="m-b-0">
<li class="clearfix">
<div class="message other-message"> Hi Aiden, how are you? How is the project coming along? </div>
<div class="message-data">
<span class="message-data-time">10:10 AM, Today</span>
</div>
</li>
<li style="text-align:left;" class="clearfix">
<div>
<div class="message my-message">Are we meeting today?</div>
<div class="message-data">
<span style="text-align:right;" class="message-data-time">10:12 AM, Today</span>
</div>
</div>
</li>
</ul>
</div>
<div class="chat-message clearfix">
<div class="input-group mb-0">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-send"></i></span>
</div>
<input type="text" class="form-control" placeholder="Enter text here...">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<ul class="list-group fa-padding">
@for (int i = 0; i < request?.list.Count; i++)
{
<LTicket Ticket="request?.list[i]" />
}
</ul>
<nav aria-label="Page navigation">
<br />
<ul class="pagination justify-content-center">
@for (int page = 1; page <= request?.PageCount; page++)
{
if (page == PageIndex)
{
<li class="page-item disabled">
<a class="page-link" href="@hc._nav.GetUriWithQueryParameter("PageIndex",page)">@(page)</a>
</li>
}
else
{
<li class="page-item">
<a class="page-link" href="@hc._nav.GetUriWithQueryParameter("PageIndex",page)">@(page)</a>
</li>
}
}
</ul>
</nav>
</div>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.0/dist/js/bootstrap.bundle.min.js"></script>
</div>
@code {
// alert
AlertColor alertColor = AlertColor.Primary;
IconName alertIconName = IconName.CheckCircleFill;
bool Hidealert = true;
string alertMessage = "";
public string? TicketID { get; set; }
public string? Title { get; set; }
[Parameter, SupplyParameterFromQuery]
public int? PageIndex { get; set; }
public Shared.DTOs.PagingDto<TicketDTO>? request { get; set; }
protected override async Task OnParametersSetAsync()
{
if (PageIndex == null) PageIndex = 1;
request = new PagingDto<TicketDTO>(2, 10, new List<TicketDTO>()
{
new TicketDTO
{
CreateDate="1402/08/05",
CreateTime="20:10:10",
EndDate="1402/08/08",
EndTime="08:10:10",
MsgStatus="خوانده شده/ در حال بررسی",
Status=StatusTicket.optout,
TicketID=1,
Title="این یک تست برای یک تیکت است"
},
new TicketDTO
{
CreateDate="1402/08/05",
CreateTime="20:10:10",
EndDate="1402/08/08",
EndTime="08:10:10",
MsgStatus="خوانده شده/ در حال بررسی",
Status=StatusTicket.optout,
TicketID=1,
Title="این یک تست برای یک تیکت است"
}
});
await base.OnParametersSetAsync();
}
private async Task Submit()
{
var eeee = Title + " " + Title;
}
}

View File

@@ -1,264 +0,0 @@
body {
background-color: #f4f7f6;
margin-top: 20px;
}
.card {
background: #fff;
transition: .5s;
border: 0;
margin-bottom: 30px;
border-radius: .55rem;
position: relative;
width: 100%;
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);
}
.chat-app .people-list {
width: 280px;
position: absolute;
left: 0;
top: 0;
padding: 20px;
z-index: 7
}
.chat-app .chat {
margin-left: 280px;
border-left: 1px solid #eaeaea
}
.people-list {
-moz-transition: .5s;
-o-transition: .5s;
-webkit-transition: .5s;
transition: .5s
}
.people-list .chat-list li {
padding: 10px 15px;
list-style: none;
border-radius: 3px
}
.people-list .chat-list li:hover {
background: #efefef;
cursor: pointer
}
.people-list .chat-list li.active {
background: #efefef
}
.people-list .chat-list li .name {
font-size: 15px
}
.people-list .chat-list img {
width: 45px;
border-radius: 50%
}
.people-list img {
float: left;
border-radius: 50%
}
.people-list .about {
float: left;
padding-left: 8px
}
.people-list .status {
color: #999;
font-size: 13px
}
.chat .chat-header {
padding: 15px 20px;
border-bottom: 2px solid #f4f7f6
}
.chat .chat-header img {
float: left;
border-radius: 40px;
width: 40px
}
.chat .chat-header .chat-about {
float: left;
padding-left: 10px
}
.chat .chat-history {
padding: 20px;
border-bottom: 2px solid #fff
}
.chat .chat-history ul {
padding: 0
}
.chat .chat-history ul li {
list-style: none;
margin-bottom: 30px
}
.chat .chat-history ul li:last-child {
margin-bottom: 0px
}
.chat .chat-history .message-data {
margin-bottom: 15px
}
.chat .chat-history .message-data img {
border-radius: 40px;
width: 40px
}
.chat .chat-history .message-data-time {
color: #434651;
padding-left: 6px
}
.chat .chat-history .message {
color: #444;
padding: 18px 20px;
line-height: 26px;
font-size: 16px;
border-radius: 7px;
display: inline-block;
position: relative
}
.chat .chat-history .message:after {
bottom: 100%;
left: 7%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-bottom-color: #fff;
border-width: 10px;
margin-left: -10px
}
.chat .chat-history .my-message {
background: #efefef
}
.chat .chat-history .my-message:after {
bottom: 100%;
left: 30px;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-bottom-color: #efefef;
border-width: 10px;
margin-left: -10px
}
.chat .chat-history .other-message {
background: #e8f1f3;
text-align: right
}
.chat .chat-history .other-message:after {
border-bottom-color: #e8f1f3;
left: 93%
}
.chat .chat-message {
padding: 20px
}
.online,
.offline,
.me {
margin-right: 2px;
font-size: 8px;
vertical-align: middle
}
.online {
color: #86c541
}
.offline {
color: #e47297
}
.me {
color: #1d8ecd
}
.float-right {
float: right
}
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0
}
@media only screen and (max-width: 767px) {
.chat-app .people-list {
height: 465px;
width: 100%;
overflow-x: auto;
background: #fff;
left: -400px;
display: none
}
.chat-app .people-list.open {
left: 0
}
.chat-app .chat {
margin: 0
}
.chat-app .chat .chat-header {
border-radius: 0.55rem 0.55rem 0 0
}
.chat-app .chat-history {
height: 300px;
overflow-x: auto
}
}
@media only screen and (min-width: 768px) and (max-width: 992px) {
.chat-app .chat-list {
height: 650px;
overflow-x: auto
}
.chat-app .chat-history {
height: 600px;
overflow-x: auto
}
}
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape) and (-webkit-min-device-pixel-ratio: 1) {
.chat-app .chat-list {
height: 480px;
overflow-x: auto
}
.chat-app .chat-history {
height: calc(100vh - 350px);
overflow-x: auto
}
}

View File

@@ -33,9 +33,9 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO()
}) ;
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") });
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("https://localhost:7075/api/") });
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") });
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5271/api/") });
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");