This commit is contained in:
mmrbnjd
2024-06-10 17:26:31 +03:30
parent 82bcfc1ffe
commit 2db5daa9b8
14 changed files with 953 additions and 469 deletions

View File

@@ -3,10 +3,12 @@ using Back.Data.Models;
using Back.Services; using Back.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json; using Newtonsoft.Json;
using Org.BouncyCastle.Asn1.Cmp; using Org.BouncyCastle.Asn1.Cmp;
using Org.BouncyCastle.Ocsp;
using Shared.DTOs; using Shared.DTOs;
using Shared.DTOs.Serch; using Shared.DTOs.Serch;
using System; using System;
@@ -289,9 +291,9 @@ namespace Back.Controllers
List<InvoiceBodyDto> InvoiceBody = new List<InvoiceBodyDto>(); List<InvoiceBodyDto> InvoiceBody = new List<InvoiceBodyDto>();
foreach (var bitem in result.invoiceDetails) foreach (var bitem in result.invoiceDetails)
{ {
InvoiceBodyDto item=new InvoiceBodyDto(); InvoiceBodyDto item = new InvoiceBodyDto();
#region body #region body
if (header.Inty==1 && header.Inp==1) if (header.Inty == 1 && header.Inp == 1)
item = new InvoiceBodyDto item = new InvoiceBodyDto
{ {
//شناسه کالا / خدمت //شناسه کالا / خدمت
@@ -373,7 +375,7 @@ namespace Back.Controllers
}; };
else if(header.Inty == 1 && header.Inp == 3) else if (header.Inty == 1 && header.Inp == 3)
item = new InvoiceBodyDto item = new InvoiceBodyDto
{ {
//شناسه کالا / خدمت //شناسه کالا / خدمت
@@ -410,17 +412,17 @@ namespace Back.Controllers
Cop = bitem.cop, Cop = bitem.cop,
Vop = bitem.vop, Vop = bitem.vop,
Bsrn = bitem.bsrn, Bsrn = bitem.bsrn,
Consfee=bitem.consfee, Consfee = bitem.consfee,
Spro=bitem.spro, Spro = bitem.spro,
Bros=bitem.bros, Bros = bitem.bros,
Tcpbs=bitem.tcpbs, Tcpbs = bitem.tcpbs,
}; };
#endregion #endregion
InvoiceBody.Add(item); InvoiceBody.Add(item);
} }
var responseModel =await _actionTaxPayer.SendInvoice(user.RolUsers.First().CompanyID,header, InvoiceBody, new PaymentDto { }); var responseModel = await _actionTaxPayer.SendInvoice(user.RolUsers.First().CompanyID, header, InvoiceBody, new PaymentDto { });
if (responseModel == null) if (responseModel == null)
{ {
return BadRequest(new List<string> { "خطا در ورود به سامانه مودیان" }); return BadRequest(new List<string> { "خطا در ورود به سامانه مودیان" });
@@ -451,7 +453,7 @@ namespace Back.Controllers
{ {
string errors = ""; string errors = "";
foreach (var item in responseModel.Body.Errors) foreach (var item in responseModel.Body.Errors)
errors +='\n'+ $"{item.ErrorCode}:{item.Detail}"; errors += '\n' + $"{item.ErrorCode}:{item.Detail}";
return BadRequest(new List<string> { errors }); return BadRequest(new List<string> { errors });
} }
@@ -468,7 +470,90 @@ namespace Back.Controllers
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID"); var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value; var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
return Ok(_servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID,item)); return Ok(await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, item));
}
[HttpGet("GetResult/{ID}")]
public async Task<ActionResult<DataInSendTaxDto>> GetResultByUid(int ID)
{
try
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
var item = await _servTaxPayer.GetSentTax(user.RolUsers.First().CompanyID, ID);
if (item == null)
return BadRequest(new List<string> { "یافت نشد" });
if (string.IsNullOrEmpty(item.uId))
return BadRequest(new List<string> { "کد پیگیری یافت نشد" });
if (!await _actionTaxPayer.login(user.RolUsers.First().CompanyID))
return BadRequest(new List<string> { "خطا در احراز هویت سازمان مالیاتی" });
DataInSendTaxDto desData = new DataInSendTaxDto();
if (item.SentStatus==SentStatus.Send
|| item.SentStatus == SentStatus.pending
|| item.SentStatus == SentStatus.IN_PROGRESS)
{
var result = await _actionTaxPayer.GetResultByUid(user.RolUsers.First().CompanyID, item.uId);
if (result == null)
return BadRequest(new List<string> { "پاسخی از سازمان دریافت نشد" });
else
{
item.InquiryResultModel = JsonConvert.SerializeObject(result);
if (result.Data != null)
{
desData = JsonConvert.DeserializeObject<DataInSendTaxDto>(result.Data.ToString());
if (desData == null)
{
desData = new DataInSendTaxDto();
desData.error = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(result.Data.ToString());
}
}
desData.SentStatus = item.SentStatus =
result.Status == "FAILED" ? SentStatus.Unsuccessful
: result.Status == "PENDING" ? SentStatus.pending
: result.Status == "SUCCESS" ? SentStatus.Successful
: result.Status == "NOT_FOUND" ? SentStatus.NOT_FOUND
: result.Status == "IN_PROGRESS" ? SentStatus.IN_PROGRESS
: SentStatus.Unknown;
}
if (await _servTaxPayer.UpdateSentTax(item)) return Ok(desData);
else return BadRequest(new List<string> { "خطای در ذخیره سازی" });
}
else if (item.SentStatus == SentStatus.Unsuccessful && !string.IsNullOrEmpty(item.InquiryResultModel))
{
InquiryResultModel inquiryResult = JsonConvert.DeserializeObject<InquiryResultModel>(item.InquiryResultModel);
if (inquiryResult.Data != null)
{
desData.SentStatus = item.SentStatus =
inquiryResult.Status == "FAILED" ? SentStatus.Unsuccessful
: inquiryResult.Status == "PENDING" ? SentStatus.pending
: inquiryResult.Status == "SUCCESS" ? SentStatus.Successful
: inquiryResult.Status == "NOT_FOUND" ? SentStatus.NOT_FOUND
: inquiryResult.Status == "IN_PROGRESS" ? SentStatus.IN_PROGRESS
: SentStatus.Unknown;
desData = JsonConvert.DeserializeObject<DataInSendTaxDto>(inquiryResult.Data.ToString());
if (desData == null)
{
desData = new DataInSendTaxDto();
desData.error = JsonConvert.DeserializeObject<List<MessageInSendTaxDto>>(inquiryResult.Data.ToString());
}
}
return Ok(desData);
}
return BadRequest(new List<string> { "در این وضعیت امکان پذیر نمی باشد" });
}
catch (Exception ex)
{
return BadRequest(new List<string> { "خطای ناشناخته" });
}
} }
} }
} }

View File

@@ -82,7 +82,16 @@ namespace Back.Controllers
// return Ok(await _servUser.ChangeUserName(newUsername, Convert.ToInt32(UserID))); // return Ok(await _servUser.ChangeUserName(newUsername, Convert.ToInt32(UserID)));
} }
[HttpGet("GetDashBoard")]
public async Task<ActionResult<DashBoardDTO>> GetDashBoard()
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
return Ok(await _servUser.GetDashBoard(Convert.ToInt32(UserID)));
}
} }
} }

View File

@@ -15,6 +15,8 @@ namespace Back.Data.Models
public string InvoiceModel { get; set; } public string InvoiceModel { get; set; }
[Column(TypeName = "nvarchar(MAX)")] [Column(TypeName = "nvarchar(MAX)")]
public string? ResponseModel { get; set; } public string? ResponseModel { get; set; }
[Column(TypeName = "nvarchar(MAX)")]
public string? InquiryResultModel { get; set; }
public SentStatus SentStatus { get; set; } public SentStatus SentStatus { get; set; }
#region Navigation #region Navigation

View File

@@ -3,7 +3,6 @@ using Back.Data.Contracts;
using Back.Data.Models; using Back.Data.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Back.Common; using Back.Common;
using Shared;
using Microsoft.OpenApi.Extensions; using Microsoft.OpenApi.Extensions;
using Shared.DTOs.Serch; using Shared.DTOs.Serch;
@@ -77,6 +76,14 @@ namespace Back.Services
.ThenInclude(inc => inc.CODUnit) .ThenInclude(inc => inc.CODUnit)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
} }
public async Task<SentTax> GetSentTax(int CompanyID, int ID)
{
return await _repoSentTax.Get(w=>w.ID== ID && w.invoice.CompanyID==CompanyID).FirstOrDefaultAsync();
}
public async Task<bool> UpdateSentTax(SentTax sent)
{
return await _repoSentTax.UpdateAsync(sent);
}
public async Task<bool> AddSentTax(SentTax sentTax) public async Task<bool> AddSentTax(SentTax sentTax)
{ {
return await _repoSentTax.AddBoolResultAsync(sentTax); return await _repoSentTax.AddBoolResultAsync(sentTax);
@@ -221,13 +228,13 @@ namespace Back.Services
return await request.OrderByDescending(o=>o.ID) return await request.OrderByDescending(o=>o.ID)
.Select(s => new SentTaxDto .Select(s => new SentTaxDto
{ {
Date = s.Date.ShamciToFormatShamciinFront(), Date = s.Date.ShamciToFormatShamci(),
Time = s.Time, Time = s.Time,
ID = s.ID, ID = s.ID,
InvoiceID = s.InvoiceID, InvoiceID = s.InvoiceID,
SentStatus=s.SentStatus, SentStatus=s.SentStatus,
msgInvoiceType = s.InvoiceType.GetDisplayName(), msgInvoiceType = s.InvoiceType.GetEnumDisplayName(),
msgSentStatus = s.SentStatus.GetDisplayName() msgSentStatus = s.SentStatus.GetEnumDisplayName()
}).Paging(itemSerchGetSentTax.PageIndex, itemSerchGetSentTax.PageSize); }).Paging(itemSerchGetSentTax.PageIndex, itemSerchGetSentTax.PageSize);
} }

View File

@@ -188,11 +188,15 @@ namespace Back.Services
user.Password = newpassword.encrypted(); user.Password = newpassword.encrypted();
return await _RepoUser.UpdateAsync(user); return await _RepoUser.UpdateAsync(user);
} }
public async Task<DashBoardDTO> GetDashBoard(int CompanyID, int UserID) public async Task<DashBoardDTO> GetDashBoard(int UserID)
{ {
var user = await GetUserByUserID(UserID);
DashBoardDTO request = new DashBoardDTO(); DashBoardDTO request = new DashBoardDTO();
var period = await _RepoPermissionPeriod var period = await _RepoPermissionPeriod
.Get(w => w.CompanyID == CompanyID && (!w.IsLocked.HasValue || !w.IsLocked.Value)).ToListAsync(); .Get(w => w.CompanyID == user.RolUsers.First().CompanyID && (!w.IsLocked.HasValue || !w.IsLocked.Value))
.Include(inc=>inc.CalculationType)
.Include(inc => inc.Permission)
.ToListAsync();
foreach (var item in period) foreach (var item in period)
{ {
request.AlistofServices.Add(new ServiceInDashBoardDTO request.AlistofServices.Add(new ServiceInDashBoardDTO
@@ -210,16 +214,16 @@ namespace Back.Services
if (!string.IsNullOrEmpty(request.LastLoginDate)) if (!string.IsNullOrEmpty(request.LastLoginDate))
request.LastLoginDate.ShamciToFormatShamci(); request.LastLoginDate.ShamciToFormatShamci();
var user = await GetUserByUserID(UserID);
if (user.Mobile == user.Username) //if (user.Mobile == user.Username)
request.Warning.Add(new AlertDTO { Status = 0, Message = "موبایل و نام کاربری بهتر است شبیه هم نباشند" }); // request.Warning.Add(new AlertDTO { Status = 0, Message = "موبایل و نام کاربری بهتر است شبیه هم نباشند" });
if (user.Mobile.encrypted() == user.Password) if (user.Mobile.encrypted() == user.Password)
request.Warning.Add(new AlertDTO { Status = 0, Message = "موبایل و کلمه عبور بهتر است شبیه هم نباشند" }); request.Warning.Add(new AlertDTO { Status = 0, Message = "موبایل و کلمه عبور بهتر است شبیه هم نباشند" });
var Company = user.RolUsers.Where(w => w.CompanyID == CompanyID).Select(s => s.Company).FirstOrDefault(); var Company = user.RolUsers.Where(w => w.CompanyID == user.RolUsers.First().CompanyID).Select(s => s.Company).FirstOrDefault();
if (Company != null) if (Company != null)
{ {
if (string.IsNullOrEmpty(Company.Email) || string.IsNullOrEmpty(Company.Phone) if (/*string.IsNullOrEmpty(Company.Email) || string.IsNullOrEmpty(Company.Phone) || */
|| string.IsNullOrEmpty(Company.EconomicCode) || string.IsNullOrEmpty(Company.UniqeMemory) string.IsNullOrEmpty(Company.EconomicCode) || string.IsNullOrEmpty(Company.UniqeMemory)
|| string.IsNullOrEmpty(Company.PrivateKey)) || string.IsNullOrEmpty(Company.PrivateKey))
{ {
request.Warning.Add(new AlertDTO { Status = 0, Message = "بهتر است اطلاعات شرکت بروزرسانی شود" }); request.Warning.Add(new AlertDTO { Status = 0, Message = "بهتر است اطلاعات شرکت بروزرسانی شود" });

View File

@@ -11,6 +11,7 @@ namespace Shared.DTOs
} }
public class DashBoardDTO public class DashBoardDTO
{ {
public string Datenow { get { return DateTime.Now.ConvertMiladiToShamsiinFront(); } }
public string? LastLoginDate { get; set; } public string? LastLoginDate { get; set; }
public List<ServiceInDashBoardDTO> AlistofServices { get; set; }=new List<ServiceInDashBoardDTO>(); public List<ServiceInDashBoardDTO> AlistofServices { get; set; }=new List<ServiceInDashBoardDTO>();
public List<AlertDTO> Warning { get; set; } = new List<AlertDTO>(); public List<AlertDTO> Warning { get; set; } = new List<AlertDTO>();

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shared.DTOs
{
public class InquiryResultModelDto
{
public string ReferenceNumber { get; set; }
public string Uid { get; set; }
public string Status { get; set; }
public string Data { get; set; }
public string PacketType { get; set; }
public string FiscalId { get; set; }
}
public class MessageInSendTaxDto
{
public string code { get; set; }
public string message { get; set; }
// public string errorType { get; set; }
}
public class DataInSendTaxDto
{
// public int? confirmationReferenceId { get; set; }
public List<MessageInSendTaxDto> error { get; set; }
// public List<MessageInSendTaxDto> warning { get; set; }
public SentStatus SentStatus { get; set; }
public string msgSentStatus { get { return SentStatus.GetEnumDisplayName(); } } }
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shared.DTOs
{
public class GetResultSentTaxDto
{
public SentStatus status { get; set; }
}
}

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@@ -9,12 +10,18 @@ namespace Shared.DTOs
{ {
public class SentTaxDto public class SentTaxDto
{ {
[Display(Name ="شناسه")]
public int ID { get; set; } public int ID { get; set; }
[Display(Name = "شناسه صورتحساب")]
public int InvoiceID { get; set; } public int InvoiceID { get; set; }
[Display(Name = "تاریخ")]
public string Date { get; set; } public string Date { get; set; }
[Display(Name = "زمان")]
public string Time { get; set; } public string Time { get; set; }
public SentStatus SentStatus { get; set; } public SentStatus SentStatus { get; set; }
[Display(Name = "وضعیت صورتحساب")]
public string msgInvoiceType { get; set; } public string msgInvoiceType { get; set; }
[Display(Name = "وضعیت ارسال")]
public string msgSentStatus { get; set; } public string msgSentStatus { get; set; }
} }
} }

View File

@@ -15,7 +15,9 @@ namespace Shared.DTOs
[Display(Name = "نامشخص")] [Display(Name = "نامشخص")]
Unknown, Unknown,
[Display(Name = "یافت نشده")] [Display(Name = "یافت نشده")]
NOT_FOUND NOT_FOUND,
[Display(Name = "در حال انجام")]
IN_PROGRESS
} }
} }

View File

@@ -0,0 +1,43 @@
@using Front.Services
@using Shared.DTOs
@inject HttpClientController hc;
<form>
<div class="row g-3">
<label class="col-sm-5 col-form-label">وضعیت ارسال</label>
<InputText @Value="inData.msgSentStatus" type="text" class="form-control" id="msgSentStatus" placeholder="وضعیت ارسال" />
</div>
@if (inData.SentStatus == SentStatus.Unsuccessful)
{
<div class="row g-3">
<table class="table">
<caption>لیست خطاهای صورتحساب</caption>
<thead>
<tr>
<th scope="col">کد</th>
<th scope="col">متن</th>
</tr>
</thead>
<tbody>
@foreach (var item in inData.error)
{
<tr>
<td>@item.code</td>
<td>@item.message</td>
</tr>
}
</tbody>
</table>
</div>
}
</form>
@code {
[Parameter] public DataInSendTaxDto inData { get; set; }
}

View File

@@ -50,7 +50,7 @@
@decimal.Parse(property.GetValue(item, null).ToString()).ToString("N0") ريال @decimal.Parse(property.GetValue(item, null).ToString()).ToString("N0") ريال
</td> </td>
} }
else if (property.Name.ToLower() == "id") else if (property.Name.ToLower() == "id" && item.ToString() != "Shared.DTOs.SentTaxDto")
{ {
if (id > 0) if (id > 0)
{ {
@@ -62,6 +62,44 @@
} }
} }
else if (property.Name.ToLower() == "msgsentstatus" && item.ToString() == "Shared.DTOs.SentTaxDto")
{
var convertmodel = (SentTaxDto)Convert.ChangeType(item, typeof(SentTaxDto));
switch (convertmodel.SentStatus)
{
case SentStatus.Send:
<td style="background-color:#6495ED">@property.GetValue(item, null)</td>
break;
case SentStatus.Successful:
<td style="background-color:#2AD51B">@property.GetValue(item, null)</td>
break;
case SentStatus.Unsuccessful:
<td style="background-color:#C70000">@property.GetValue(item, null)</td>
break;
case SentStatus.pending :
<td style="background-color:#FCFF2A">@property.GetValue(item, null)</td>
break;
case SentStatus.IN_PROGRESS :
<td style="background-color:#FCFF2A">@property.GetValue(item, null)</td>
break;
case SentStatus.NOT_FOUND:
<td style="background-color:#F19109">@property.GetValue(item, null)</td>
break;
case SentStatus.Unknown:
<td style="background-color:#932D2D">@property.GetValue(item, null)</td>
break;
default:
<td>@property.GetValue(item, null)</td>
break;
}
}
else else
{ {
<td>@property.GetValue(item, null)</td> <td>@property.GetValue(item, null)</td>
@@ -70,6 +108,26 @@
} }
} }
if (item.ToString() == "Shared.DTOs.SentTaxDto")
{
var convertmodel = (SentTaxDto)Convert.ChangeType(item, typeof(SentTaxDto));
if (convertmodel.SentStatus == SentStatus.Send
|| convertmodel.SentStatus == SentStatus.pending
|| convertmodel.SentStatus == SentStatus.IN_PROGRESS)
{
<td><button @onclick="()=>OnMultipleOfThree.InvokeAsync(Convert.ToInt32(id))" type="button" class="btn btn-link">تعیین وضعیت</button></td>
}
else if (convertmodel.SentStatus == SentStatus.Unsuccessful)
{
<td><button @onclick="()=>OnMultipleOfThree.InvokeAsync(Convert.ToInt32(id))" type="button" class="btn btn-link">نمایش خطا</button></td>
}
else
{
<td><button type="button" class="btn btn-link disabled">...</button></td>
}
}
else
{
if (id > 0) if (id > 0)
{ {
<td><button @onclick="()=>OnMultipleOfThree.InvokeAsync(Convert.ToInt32(id))" type="button" class="btn btn-link">ویرایش</button></td> <td><button @onclick="()=>OnMultipleOfThree.InvokeAsync(Convert.ToInt32(id))" type="button" class="btn btn-link">ویرایش</button></td>
@@ -78,6 +136,8 @@
{ {
<td><button type="button" class="btn btn-link disabled">ویرایش</button></td> <td><button type="button" class="btn btn-link disabled">ویرایش</button></td>
} }
}
} }
</tr> </tr>

View File

@@ -1,19 +1,21 @@
@page "/Panel" @page "/Panel"
@using Front.Services @using Front.Services
@using Shared.DTOs
@inject localService localserv; @inject localService localserv;
@inject NavigationManager nav @inject NavigationManager nav
@layout PanelLayout @layout PanelLayout
@inject HttpClientController hc;
<PageTitle>کاربری</PageTitle> <PageTitle>کاربری</PageTitle>
<div class="row"> <div class="row">
<div class="col-lg-8 mb-4 order-0"> <div class="col-lg-8 mb-4 order-0">
<div class="card"> <div class="card">
<div class="d-flex align-items-end row"> <div class="d-flex align-items-end row">
<div class="col-sm-7"> <div class="col-sm-7">
<div class="card-body"> <div class="card-body">
<h5 class="card-title text-primary">تبریک! 🎉</h5> <h5 class="card-title text-primary">خوش آمدید! 🎉</h5>
<p class="mb-4">شما انجام داده اید <span class="fw-bold">72%</span> فروش بیشتر امروز نشان جدید خود را در نمایه خود بررسی کنید.</p> <p class="mb-4">یک دید کلی از سیستم برای شما تهیه شده<br /> بهتر است روزانه نگاهی به آن داشته باشید</p>
<a href="javascript:;" class="btn btn-sm btn-outline-primary">مشاهده مدالها</a>
</div> </div>
</div> </div>
<div class="col-sm-5 text-center text-sm-left"> <div class="col-sm-5 text-center text-sm-left">
@@ -26,6 +28,9 @@
</div> </div>
<div class="col-lg-4 col-md-4 order-1"> <div class="col-lg-4 col-md-4 order-1">
<div class="row"> <div class="row">
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 3))
{
<div class="col-lg-6 col-md-12 col-6 mb-4"> <div class="col-lg-6 col-md-12 col-6 mb-4">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
@@ -38,40 +43,129 @@
<i class="bx bx-dots-vertical-rounded"></i> <i class="bx bx-dots-vertical-rounded"></i>
</button> </button>
<div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3"> <div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item" href="javascript:void(0);">نمایش بیشتر</a> <a class="dropdown-item" >تمدید</a>
<a class="dropdown-item" href="javascript:void(0);">حذف</a> <NavLink class="dropdown-item" href="Invoice">صورتحساب ها</NavLink>
</div> </div>
</div> </div>
</div> </div>
<span class="fw-semibold d-block">پروفایل</span> <span class="fw-semibold d-block">صورتحساب <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title mb-1">12,628<span style="font-size: 14px">تومان</span></h3> <h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
<small class="text-success fw-semibold"><i class='bx bx-up-arrow-alt'></i> +72.80%</small> @if (dashBoard.AlistofServices.Any(w => w.PermissionID == 3 && w.CalTypeID == 1))
{
@if (!dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First().Equals("-"))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 3 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
@if (Convert.ToInt32(dashBoard.Datenow) <= Convert.ToInt32(@dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First().Replace("/","")))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 3 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
}
</div> </div>
</div> </div>
</div> </div>
}
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 4))
{
<div class="col-lg-6 col-md-12 col-6 mb-4"> <div class="col-lg-6 col-md-12 col-6 mb-4">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="card-title d-flex align-items-start justify-content-between"> <div class="card-title d-flex align-items-start justify-content-between">
<div class="avatar flex-shrink-0"> <div class="avatar flex-shrink-0">
<img src="assets/img/icons/unicons/wallet-info.png" alt="Credit Card" class="rounded"> <img src="assets/img/icons/unicons/wallet-info.png" alt="chart success" class="rounded">
</div> </div>
<div class="dropdown"> <div class="dropdown">
<button class="btn p-0" type="button" id="cardOpt6" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button class="btn p-0" type="button" id="cardOpt3" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="bx bx-dots-vertical-rounded"></i> <i class="bx bx-dots-vertical-rounded"></i>
</button> </button>
<div class="dropdown-menu dropdown-menu-end new-style-14" aria-labelledby="cardOpt6"> <div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item" href="javascript:void(0);">مشاهده بیشتر</a> <a class="dropdown-item" >تمدید</a>
<a class="dropdown-item" href="javascript:void(0);">حذف</a> <NavLink class="dropdown-item" href="Cod">کالا ها</NavLink>
</div> </div>
</div> </div>
</div> </div>
<span>فروش</span> <span class="fw-semibold d-block">کالا <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title text-nowrap mb-1">4,679<span style="font-size: 14px">تومان</span></h3> <h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
<small class="text-success fw-semibold"><i class='bx bx-up-arrow-alt'></i> +28.42%</small> @if (dashBoard.AlistofServices.Any(w => w.PermissionID == 4 && w.CalTypeID == 1))
{
@if (!dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First().Equals("-"))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 4 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
@if (Convert.ToInt32(dashBoard.Datenow) <= Convert.ToInt32(@dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First().Replace("/", "")))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 4 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
}
</div> </div>
</div> </div>
</div> </div>
}
</div> </div>
</div> </div>
<!-- Total Revenue --> <!-- Total Revenue -->
@@ -127,52 +221,144 @@
<!--/ Total Revenue --> <!--/ Total Revenue -->
<div class="col-12 col-md-8 col-lg-4 order-3 order-md-2"> <div class="col-12 col-md-8 col-lg-4 order-3 order-md-2">
<div class="row"> <div class="row">
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 5))
{
<div class="col-6 mb-4"> <div class="col-6 mb-4">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="card-title d-flex align-items-start justify-content-between"> <div class="card-title d-flex align-items-start justify-content-between">
<div class="avatar flex-shrink-0"> <div class="avatar flex-shrink-0">
<img src="assets/img/icons/unicons/paypal.png" alt="Credit Card" class="rounded"> <img src="assets/img/icons/unicons/cc-primary.png" alt="chart success" class="rounded">
</div> </div>
<div class="dropdown"> <div class="dropdown">
<button class="btn p-0" type="button" id="cardOpt4" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button class="btn p-0" type="button" id="cardOpt3" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="bx bx-dots-vertical-rounded"></i> <i class="bx bx-dots-vertical-rounded"></i>
</button> </button>
<div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt4"> <div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item" href="javascript:void(0);">نمایش بیشتر</a> <a class="dropdown-item">تمدید</a>
<a class="dropdown-item" href="javascript:void(0);">حذف</a> <NavLink class="dropdown-item" href="Customer">مشتری ها</NavLink>
</div> </div>
</div> </div>
</div> </div>
<span class="d-block mb-1">مبلغ پرداختی</span> <span class="fw-semibold d-block">مشتری <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title text-nowrap mb-2">2,456<span style="font-size: 14px">تومان</span></h3> <h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
<small class="text-danger fw-semibold"><i class='bx bx-down-arrow-alt'></i> -14.82%</small> @if (dashBoard.AlistofServices.Any(w => w.PermissionID == 5 && w.CalTypeID == 1))
{
@if (!dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First().Equals("-"))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 5 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
@if (Convert.ToInt32(dashBoard.Datenow) <= Convert.ToInt32(@dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First().Replace("/", "")))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 5 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
}
</div> </div>
</div> </div>
</div> </div>
}
@if (dashBoard != null && dashBoard.AlistofServices.Any(w => w.PermissionID == 16))
{
<div class="col-6 mb-4"> <div class="col-6 mb-4">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="card-title d-flex align-items-start justify-content-between"> <div class="card-title d-flex align-items-start justify-content-between">
<div class="avatar flex-shrink-0"> <div class="avatar flex-shrink-0">
<img src="assets/img/icons/unicons/cc-primary.png" alt="Credit Card" class="rounded"> <img src="assets/img/icons/unicons/paypal.png" alt="chart success" class="rounded">
</div> </div>
<div class="dropdown"> <div class="dropdown">
<button class="btn p-0" type="button" id="cardOpt1" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button class="btn p-0" type="button" id="cardOpt3" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="bx bx-dots-vertical-rounded"></i> <i class="bx bx-dots-vertical-rounded"></i>
</button> </button>
<div class="dropdown-menu new-style-14" aria-labelledby="cardOpt1"> <div class="dropdown-menu dropdown-menu-end customStyle new-style-15" aria-labelledby="cardOpt3">
<a class="dropdown-item" href="javascript:void(0);">نمایش بیشتر</a> <a class="dropdown-item">تمدید</a>
<a class="dropdown-item" href="javascript:void(0);">حذف</a> <NavLink class="dropdown-item" href="TaxPayer">سامانه مودیان</NavLink>
</div> </div>
</div> </div>
</div> </div>
<span class="fw-semibold d-block mb-1">معاملات</span> <span class="fw-semibold d-block">سامانه مودیان <br /> (کل @dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Total).First())</span>
<h3 class="card-title mb-2">14,857<span style="font-size: 14px">تومان</span></h3> <h3 class="card-title mb-1"><span style="font-size: 14px">مانده</span></h3>
<small class="text-success fw-semibold"><i class='bx bx-up-arrow-alt'></i> +28.14%</small> @if (dashBoard.AlistofServices.Any(w => w.PermissionID == 16 && w.CalTypeID == 1))
{
@if (!dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First().Equals("-"))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
@dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First() آیتم
</small>
}
}
else if (dashBoard.AlistofServices.Any(w => w.PermissionID == 16 && w.CalTypeID == 2))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
نامحدود
</small>
}
else
{
@if (Convert.ToInt32(dashBoard.Datenow) <= Convert.ToInt32(@dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First().Replace("/", "")))
{
<small class="text-success fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
else
{
<small class="text-danger fw-semibold">
<i class='bx'></i>
تا تاریخ @dashBoard.AlistofServices.Where(w => w.PermissionID == 16 && w.CalTypeID == 1).Select(s => s.Remaining).First()
</small>
}
}
</div> </div>
</div> </div>
</div> </div>
}
<!-- </div> <!-- </div>
<div class="row"> --> <div class="row"> -->
<div class="col-12 mb-4"> <div class="col-12 mb-4">
@@ -196,8 +382,8 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<!-- Order Statistics --> <!-- Order Statistics -->
<div class="col-md-6 col-lg-4 col-xl-4 order-0 mb-4"> <div class="col-md-6 col-lg-4 col-xl-4 order-0 mb-4">
<div class="card h-100"> <div class="card h-100">
@@ -444,15 +630,23 @@
</div> </div>
</div> </div>
<!--/ Transactions --> <!--/ Transactions -->
</div> </div>
@code { @code {
public DashBoardDTO? dashBoard { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
if (!await localserv.OnlineUser()) if (!await localserv.OnlineUser())
nav.NavigateTo("/"); nav.NavigateTo("/");
var rsp = await hc.Get("User/GetDashBoard");
if (rsp.IsSuccessStatusCode)
{
dashBoard = await rsp.Content.ReadFromJsonAsync<DashBoardDTO>();
}
await base.OnInitializedAsync(); await base.OnInitializedAsync();
} }
} }

View File

@@ -7,7 +7,7 @@
@using Shared @using Shared
@using Shared.DTOs @using Shared.DTOs
@using Shared.DTOs.Serch @using Shared.DTOs.Serch
<Modal @ref="modal" />
<Preload LoadingText="در حال بارگذاری..." /> <Preload LoadingText="در حال بارگذاری..." />
@* search *@ @* search *@
<div class="row"> <div class="row">
@@ -33,7 +33,7 @@
@foreach (InvoiceType i in Enum.GetValues(typeof(InvoiceType))) @foreach (InvoiceType i in Enum.GetValues(typeof(InvoiceType)))
{ {
<option value="@Convert.ToInt32(i)">@i.GetEnumDisplayName()</option> <option value="@i">@i.GetEnumDisplayName()</option>
} }
@@ -46,13 +46,16 @@
@foreach (SentStatus i in Enum.GetValues(typeof(SentStatus))) @foreach (SentStatus i in Enum.GetValues(typeof(SentStatus)))
{ {
<option value="@Convert.ToInt32(i)">@i.GetEnumDisplayName()</option> <option value="@i">@i.GetEnumDisplayName()</option>
} }
</select> </select>
</div> </div>
<div class="col-auto">
<button @onclick="() => Load(1)" type="submit" class="btn btn-primary">جستجو</button>
</div>
</div> </div>
</li> </li>
</ul> </ul>
@@ -99,8 +102,10 @@
} }
@code { @code {
private Modal modal = default!;
[Inject] protected PreloadService PreloadService { get; set; } = default!; [Inject] protected PreloadService PreloadService { get; set; } = default!;
ItemSerchGetSentTax itemsearch = new ItemSerchGetSentTax(); ItemSerchGetSentTax itemsearch = new ItemSerchGetSentTax();
[Parameter]
public int? routed { get; set; } = 0; public int? routed { get; set; } = 0;
// alert // alert
AlertColor alertColor = AlertColor.Primary; AlertColor alertColor = AlertColor.Primary;
@@ -128,7 +133,23 @@
@functions{ @functions{
public async Task SentTaxItem(int ID) public async Task SentTaxItem(int ID)
{ {
var rsp = await hc.Get($"TaxPayer/GetResult/{ID}");
if (rsp.IsSuccessStatusCode)
{
var requestsendTax = await rsp.Content.ReadFromJsonAsync<DataInSendTaxDto>();
//عویض کردن اطلاعات در گرید
var ingriddata= request.list.Where(w => w.ID == ID).First();
ingriddata.SentStatus = requestsendTax.SentStatus;
ingriddata.msgSentStatus = requestsendTax.msgSentStatus;
//-----------------
var parameters = new Dictionary<string, object>();
parameters.Add("inData", requestsendTax);
await modal.ShowAsync<CUSComponent.SendTaxItem>(title: "وضعیت صورتحساب ارسالی", parameters: parameters);
}
else{
var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
ShowDangerAlert(request[0]);
}
} }
public async Task Load(int pi) public async Task Load(int pi)
{ {