This commit is contained in:
mmrbnjd
2024-07-27 17:06:32 +03:30
parent f5666c705d
commit 97c30ce438
8 changed files with 206 additions and 41 deletions

View File

@@ -36,7 +36,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Service"> <Reference Include="Service">
<HintPath>..\..\Dlls\Service.dll</HintPath> <HintPath>..\..\..\LocalGit\TaxPayerTools\Service\bin\Debug\Service.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>

View File

@@ -1,4 +1,5 @@
using Back.Services; using Back.Common;
using Back.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
@@ -11,14 +12,14 @@ namespace Back.Controllers
[Route("api/[controller]")] [Route("api/[controller]")]
[Authorize] [Authorize]
[ApiController] [ApiController]
public class OrderssController : ControllerBase public class OrdersController : ControllerBase
{ {
private readonly ServOrders _servOrders; private readonly ServOrders _servOrders;
private readonly ServPromotion _servPromotion; private readonly ServPromotion _servPromotion;
private readonly ServPricing _servPricing; private readonly ServPricing _servPricing;
private readonly servUser _servUser; private readonly servUser _servUser;
public OrderssController(ServOrders servOrders, ServPromotion servPromotion, ServPricing servPricing, servUser servUser) public OrdersController(ServOrders servOrders, ServPromotion servPromotion, ServPricing servPricing, servUser servUser)
{ {
_servOrders = servOrders; _servOrders = servOrders;
_servPricing = servPricing; _servPricing = servPricing;
@@ -51,7 +52,27 @@ namespace Back.Controllers
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID)); var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
int CompanyID = user.RolUsers.First().CompanyID; int CompanyID = user.RolUsers.First().CompanyID;
return Ok(await _servOrders.GetOrderItems(CompanyID, OrderID)); return Ok(await _servOrders.GetOrderItems( OrderID, CompanyID));
}
[HttpDelete("CancelOrder/{OrderID}")]
public async Task<ActionResult<List<OrderItemDto>>> CancelOrder(int OrderID)
{
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var user = await _servUser.GetUserByUserID(Convert.ToInt32(UserID));
int CompanyID = user.RolUsers.First().CompanyID;
var order =await _servOrders.GetOrder(OrderID, CompanyID);
if (order==null)
return NotFound();
if (order.Status==StatusOrder.Create)
{
order.Status = StatusOrder.Cancel;
order.ApprovalDate = DateTime.Now.ConvertMiladiToShamsi();
return Ok(await _servOrders.UpdateOrder(order));
}
else return BadRequest(new List<string> { "در این وضعیت امکان ابطال نیست" });
} }
} }
} }

View File

@@ -33,8 +33,8 @@ namespace Back.Services
return await request return await request
.Select(w => new OrderDto .Select(w => new OrderDto
{ {
ApprovalDate = w.ApprovalDate, ApprovalDate = w.ApprovalDate.ShamciToFormatShamci(),
DateCreate = w.DateCreate, DateCreate = w.DateCreate.ShamciToFormatShamci(),
ID = w.ID, ID = w.ID,
PreDiscount = w.PreDiscount, PreDiscount = w.PreDiscount,
Status = w.Status, Status = w.Status,
@@ -46,7 +46,9 @@ namespace Back.Services
} }
public async Task<List<OrderItemDto>> GetOrderItems(int OrderID,int CompanyID) public async Task<List<OrderItemDto>> GetOrderItems(int OrderID,int CompanyID)
{ {
return await _repoOrderItem.Get(w => w.OrderID == OrderID && w.Order.CompanyID== CompanyID) return await _repoOrderItem.Get(w => w.OrderID == OrderID && w.Order.CompanyID == CompanyID)
.Include(inc=>inc.Permission)
.Include(inc=>inc.Promotion)
.Select(s=>new OrderItemDto .Select(s=>new OrderItemDto
{ {
OrderID = OrderID, OrderID = OrderID,
@@ -55,9 +57,18 @@ namespace Back.Services
Discount=s.Discount, Discount=s.Discount,
ID = s.ID, ID = s.ID,
Tax = s.Tax, Tax = s.Tax,
Type= s.PermissionID.HasValue && !s.PromotionID.HasValue ? "" : !s.PermissionID.HasValue && s.PromotionID.HasValue ? "تعرفه" : "نامشخص", Type= s.PermissionID.HasValue && !s.PromotionID.HasValue ? "سرویس" : !s.PermissionID.HasValue && s.PromotionID.HasValue ? "تعرفه" : "نامشخص",
IDForType = s.PermissionID.HasValue && !s.PromotionID.HasValue ? s.PermissionID.Value : !s.PermissionID.HasValue && s.PromotionID.HasValue ? s.PromotionID.Value : 0 IDForType = s.PermissionID.HasValue && !s.PromotionID.HasValue ? s.PermissionID.Value : !s.PermissionID.HasValue && s.PromotionID.HasValue ? s.PromotionID.Value : 0,
Title = s.PermissionID.HasValue && !s.PromotionID.HasValue ? s.Permission.Title : !s.PermissionID.HasValue && s.PromotionID.HasValue ? s.Promotion.Name : "",
}).ToListAsync(); }).ToListAsync();
} }
public async Task<Order> GetOrder(int OrderID, int CompanyID)
{
return await _repoOrder.Get(w => w.ID == OrderID && w.CompanyID == CompanyID) .FirstOrDefaultAsync();
}
public async Task<bool> UpdateOrder(Order order)
{
return await _repoOrder.UpdateAsync(order);
}
} }
} }

View File

@@ -23,9 +23,9 @@ namespace Shared.DTOs
public decimal PreDiscount { get; set; } public decimal PreDiscount { get; set; }
[Display(Name = "تخفیف سفارش")] [Display(Name = "تخفیف سفارش")]
public decimal TDiscount { get; set; } public decimal TDiscount { get; set; }
[Display(Name = "مبلغ بغد از تخفیف")] [Display(Name = "بغد از تخفیف")]
public decimal lstDiscount { get; set; } public decimal lstDiscount { get; set; }
[Display(Name = "مبلغ مالیات")] [Display(Name = "مالیات")]
public decimal TTax { get; set; } public decimal TTax { get; set; }
[Display(Name = "مبلغ نهایی")] [Display(Name = "مبلغ نهایی")]
public decimal TPrice { get; set; } public decimal TPrice { get; set; }

View File

@@ -9,6 +9,7 @@ namespace Shared.DTOs
public class OrderItemDto public class OrderItemDto
{ {
public int ID { get; set; } public int ID { get; set; }
public string Title { get; set; }
public int OrderID { get; set; } public int OrderID { get; set; }
public string Type { get; set; } public string Type { get; set; }
public int IDForType { get; set; } public int IDForType { get; set; }

View File

@@ -2,6 +2,8 @@
@using Shared.DTOs @using Shared.DTOs
@inject HttpClientController hc; @inject HttpClientController hc;
<Preload LoadingText="در حال بارگذاری..." /> <Preload LoadingText="در حال بارگذاری..." />
<ConfirmDialog @ref="dialog" />
@* alert *@ @* alert *@
<div class="row"> <div class="row">
<Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false"> <Alert hidden="@Hidealert" Color="@alertColor" Dismissable="false">
@@ -11,24 +13,103 @@
</div> </div>
<div class="row g-3"> <div class="row g-3">
<div class="col-md-4"> <div class="col-md-2">
<label class="col-sm-5 col-form-label">وضغیت</label> <label class="col-sm-5 col-form-label">وضغیت</label>
<InputText @value="order.StatusTitle" type="text" class="form-control" id="StatusTitle" placeholder="وضغیت" /> <input style="text-align: center;" value="@order.StatusTitle" type="text" class="form-control" id="StatusTitle" placeholder="وضغیت" readonly />
</div> </div>
<div class="col-md-4"> <div class="col-md-2">
<label class="col-sm-5 col-form-label">تاریخ ایحاد</label> <label class="col-sm-5 col-form-label">تاریخ ایحاد</label>
<InputText @bind-Value="order.DateCreate" type="text" class="form-control" id="DateCreate" placeholder="تاریخ ایجاد" /> <InputText style="text-align: center;" @bind-Value="order.DateCreate" type="text" class="form-control" id="DateCreate" placeholder="تاریخ ایجاد" readonly />
</div> </div>
@if (order.Status!=StatusOrder.Create) @if (order.Status != StatusOrder.Create)
{ {
<div class="col-md-4"> <div class="col-md-2">
<label class="col-sm-5 col-form-label">@titledateapp</label> <label class="col-sm-5 col-form-label">@titledateapp</label>
<InputText @bind-Value="order.ApprovalDate" type="text" class="form-control" id="ApprovalDate" placeholder="@titledateapp" /> <InputText style="text-align: center;" @bind-Value="order.ApprovalDate" type="text" class="form-control" id="ApprovalDate" placeholder="@titledateapp" readonly />
</div> </div>
} }
</div> </div>
<br />
<hr class="hr" />
<div class="row g-3">
<Grid @ref="grid" TItem="OrderItemDto"
AllowRowClick="true"
AllowSorting="true"
Class="table table-hover"
DataProvider="DataProvider"
AllowPaging="true"
PageSize="10"
Responsive="true">
<GridColumn TItem="OrderItemDto" HeaderText="عنوان">
@context.Title
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="نوع">
@context.Type
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="تعداد">
@context.CreditAmount
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="قیمت واحد">
@context.APrice.ToString("N0")
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="تخفیف">
@context.Discount.ToString("N0")
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="مالیات">
@context.Tax.ToString("N0")
</GridColumn>
<GridColumn TItem="OrderItemDto" HeaderText="مبلغ کل">
@context.Total.ToString("N0")
</GridColumn>
</Grid>
</div>
<hr class="hr" />
<div class="row g-3">
<div class="col-md-3">
<label class="col-sm-5 col-form-label">مبلغ سفارش</label>
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.PreDiscount" Locale="fa-Ir" Placeholder="مبلغ سفارش" readonly />
</div>
<div class="col-md-3">
<label class="col-sm-5 col-form-label">تخفیف سفارش</label>
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.TDiscount" Locale="fa-Ir" Placeholder="تخفیف سفارش" readonly />
</div>
<div class="col-md-3">
<label class="col-sm-5 col-form-label">مالیات</label>
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.TTax" Locale="fa-Ir" Placeholder="مالیات" readonly />
</div>
@* <div class="col-md-4">
<label class="col-sm-5 col-form-label">بغد از تخفیف</label>
<CurrencyInput TValue="decimal" @bind-Value="order.lstDiscount" Locale="fa-Ir" Placeholder="بغد از تخفیف" readonly />
</div> *@
<div class="col-md-3">
<label class="col-sm-5 col-form-label">مبلغ نهایی</label>
<CurrencyInput style="text-align: center;" TValue="decimal" @bind-Value="order.TTax" Locale="fa-Ir" Placeholder="مبلغ نهایی" readonly />
</div>
</div>
<div class="form-group col-md-4">
<br />
@if (order.Status == StatusOrder.Create)
{
<Button class="mt-3" Color="ButtonColor.Success" @onclick="OnClickPay" Type="ButtonType.Button">
پرداخت
</Button>
<Button class="mt-3" Color="ButtonColor.Danger" @onclick="OnClickCancel" Type="ButtonType.Button">
ابطال
</Button>
}
</div>
@code { @code {
#region Alert #region Alert
@@ -38,7 +119,9 @@
bool Hidealert = true; bool Hidealert = true;
string alertMessage = ""; string alertMessage = "";
#endregion #endregion
private ConfirmDialog dialog = default!;
public ActionInResultComponent result { get; set; }
Grid<OrderItemDto> grid = default!;
[Inject] protected PreloadService PreloadService { get; set; } = default!; [Inject] protected PreloadService PreloadService { get; set; } = default!;
[Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; } [Parameter] public EventCallback<ActionInResultComponent> OnMultipleOfThree { get; set; }
[Parameter] public OrderDto order { get; set; } [Parameter] public OrderDto order { get; set; }
@@ -46,7 +129,7 @@
string titledateapp = "تاریخ"; string titledateapp = "تاریخ";
protected override async Task OnParametersSetAsync() protected override async Task OnParametersSetAsync()
{ {
if (order.Status==StatusOrder.Cancel) if (order.Status == StatusOrder.Cancel)
{ {
titledateapp += " ابطال"; titledateapp += " ابطال";
} }
@@ -57,7 +140,13 @@
await base.OnParametersSetAsync(); await base.OnParametersSetAsync();
} }
} }
@functions{ @functions {
private async Task<GridDataProviderResult<OrderItemDto>> DataProvider(GridDataProviderRequest<OrderItemDto> request)
{
OrderItems = await LoadOrderItem(); // call a service or an API to pull the employees
return await Task.FromResult(request.ApplyTo(OrderItems));
}
private void ShowSuccessAlert(string msg) private void ShowSuccessAlert(string msg)
{ {
Hidealert = false; Hidealert = false;
@@ -72,14 +161,62 @@
alertIconName = IconName.ExclamationTriangleFill; alertIconName = IconName.ExclamationTriangleFill;
alertMessage = msg; alertMessage = msg;
} }
private async Task LoadOrderItem(){ private async Task<List<OrderItemDto>> LoadOrderItem()
{
PreloadService.Show(SpinnerColor.Dark); PreloadService.Show(SpinnerColor.Dark);
var rsp = await hc.Get($"Orderss/GetOrderDetails/{order.ID}"); var rsp = await hc.Get($"Orders/GetOrderDetails/{order.ID}");
if (rsp.IsSuccessStatusCode)
OrderItems = await rsp.Content.ReadFromJsonAsync<List<OrderItemDto>?>();
else
ShowDangerAlert("خطایی در بارگیری");
PreloadService.Hide(); PreloadService.Hide();
if (rsp.IsSuccessStatusCode)
return await rsp.Content.ReadFromJsonAsync<List<OrderItemDto>?>();
else
{
ShowDangerAlert("خطایی در بارگیری");
return new List<OrderItemDto>();
}
}
private async Task OnClickPay()
{
// result.Status = ComponentStatus.success;
// result.Action = ComponentAction.add;
// await OnMultipleOfThree.InvokeAsync(result);
}
private async Task OnClickCancel()
{
var confirmation = await dialog.ShowAsync(
title: "عملیات ابطال سفارش",
message1: $"از ابطال سفارش {order.ID}",
message2: "اطمینان دارید?");
if (confirmation)
{
PreloadService.Show(SpinnerColor.Dark);
var rsp = await hc.Get($"Orders/CancelOrder/{order.ID}");
PreloadService.Hide();
if (rsp.IsSuccessStatusCode)
{
if(await rsp.Content.ReadFromJsonAsync<bool>())
{
result.Status = ComponentStatus.success;
result.Action = ComponentAction.delete;
await OnMultipleOfThree.InvokeAsync(result);
}
else
ShowDangerAlert("خطای سیستمی");
}
else if (rsp.StatusCode==System.Net.HttpStatusCode.NotFound)
ShowDangerAlert("سفارش یافت نشد");
else
{
var request = await rsp.Content.ReadFromJsonAsync<List<string>>();
ShowDangerAlert(request[0]);
}
}
} }
} }

View File

@@ -148,7 +148,7 @@
itemsearch.PageSize = 10; itemsearch.PageSize = 10;
itemsearch.PageIndex = pi; itemsearch.PageIndex = pi;
PreloadService.Show(SpinnerColor.Dark); PreloadService.Show(SpinnerColor.Dark);
var rsp = await hc.Post<ItemSerachOrder>("Orderss/GetAllOrder",itemsearch); var rsp = await hc.Post<ItemSerachOrder>("Orders/GetAllOrder",itemsearch);
if (rsp.IsSuccessStatusCode) if (rsp.IsSuccessStatusCode)
request = await rsp.Content.ReadFromJsonAsync<Shared.DTOs.PagingDto<OrderDto>?>(); request = await rsp.Content.ReadFromJsonAsync<Shared.DTOs.PagingDto<OrderDto>?>();
else else
@@ -171,20 +171,15 @@
alertMessage = msg; alertMessage = msg;
} }
public async Task CallBackItem(ActionInResultComponent result) public async Task CallBackFromReadItem(ActionInResultComponent result)
{ {
if (result.Action == ComponentAction.add) if (result.Action == ComponentAction.add)
{ {
if (result.Status == ComponentStatus.success) if (result.Status == ComponentStatus.success)
ShowSuccessAlert("سفارش جدید با موفقیت اضافه شد"); ShowSuccessAlert("سفارش پرداخت شد");
} }
else if (result.Action == ComponentAction.update)
{
if (result.Status == ComponentStatus.success)
ShowSuccessAlert("اطلاعات سفارش با موفقیت ویرایش شد");
}
else if (result.Action == ComponentAction.delete) else if (result.Action == ComponentAction.delete)
{ {
if (result.Status == ComponentStatus.success) if (result.Status == ComponentStatus.success)
@@ -200,10 +195,10 @@
{ {
var parameters = new Dictionary<string, object>(); var parameters = new Dictionary<string, object>();
var item = request.list.Where(w => w.ID == ID).First().Clone(); var item = request?.list.Where(w => w.ID == ID).First().Clone();
parameters.Add("order", item); parameters.Add("order", item);
parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create<ActionInResultComponent>(this, CallBackItem)); parameters.Add("OnMultipleOfThree", EventCallback.Factory.Create<ActionInResultComponent>(this, CallBackFromReadItem));
await modal.ShowAsync<CodItem>(title:$"سفارش {ID}", parameters: parameters); await modal.ShowAsync<OrderItemRead>(title:$"سفارش {ID}", parameters: parameters);
} }

View File

@@ -37,10 +37,10 @@ builder.Services.AddScoped(sp => new UserAuthenticationDTO()
//builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") }); //builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://195.88.208.142:7075/api/") });
//Home //Home
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/") });
//farzan //farzan
//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"); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("fa-Ir");