Merge branch 'master' into Feature/InstitutionContract/Create-Api
This commit is contained in:
@@ -30,8 +30,9 @@ public static class StaticWorkshopAccounts
|
||||
/// 380 - افروز نظری
|
||||
/// 381 - مهدی قربانی
|
||||
/// 392 - عمار حسن دوست
|
||||
/// 20 - سمیرا الهی نیا
|
||||
/// </summary>
|
||||
public static List<long> StaticAccountIds = [2, 3, 380, 381, 392];
|
||||
public static List<long> StaticAccountIds = [2, 3, 380, 381, 392, 20];
|
||||
|
||||
/// <summary>
|
||||
/// این تاریخ در جدول اکانت لفت ورک به این معنیست
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Domain;
|
||||
using Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
using Company.Domain.empolyerAgg;
|
||||
using Company.Domain.RepresentativeAgg;
|
||||
|
||||
@@ -83,6 +84,7 @@ public class PersonalContractingParty : EntityBase
|
||||
|
||||
public List<Employer> Employers { get; private set; }
|
||||
public Representative Representative { get; set; }
|
||||
public List<ContractingPartyBankAccount> ContractingPartyBankAccounts { get; set; }
|
||||
|
||||
public PersonalContractingParty()
|
||||
{
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
using _0_Framework.Domain;
|
||||
using Company.Domain.ContarctingPartyAgg;
|
||||
|
||||
namespace Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
|
||||
public class ContractingPartyBankAccount : EntityBase
|
||||
{
|
||||
public long ContractingPartyId { get; private set; }
|
||||
|
||||
public PersonalContractingParty ContractingParty { get; private set; }
|
||||
public string CardNumber { get; private set; }
|
||||
public string AccountHolderName { get; private set; }
|
||||
public string AccountNumber { get; private set; }
|
||||
public string IBan { get; private set; }
|
||||
public bool IsAuth { get; private set; }
|
||||
|
||||
public ContractingPartyBankAccount(long contractingPartyId, string cardNumber, string accountHolderName,
|
||||
string accountNumber, string iBan , bool isAuth)
|
||||
{
|
||||
ContractingPartyId = contractingPartyId;
|
||||
CardNumber = cardNumber;
|
||||
AccountHolderName = accountHolderName;
|
||||
AccountNumber = accountNumber;
|
||||
IBan = iBan;
|
||||
IsAuth = isAuth;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Domain;
|
||||
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
|
||||
namespace Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
|
||||
public interface IContractingPartyBankAccountsRepository:IRepository<long,ContractingPartyBankAccount>
|
||||
{
|
||||
Task<OperationResult<List<GetContractingPartyBankAccountViewModel>>> GetList(ContractingPartyBankAccountSearchModel searchModel);
|
||||
Task<OperationResult<List<string>>> ContractingPartyOrAccountHolderNameSelectList(string search, string selected);
|
||||
Task<OperationResult<List<string>>> IBanSelectList(string search, string selected);
|
||||
|
||||
Task<OperationResult<List<string>>> CardNumberSelectList(string search, string selected);
|
||||
Task<OperationResult<List<string>>> AccountNumberSelectList(string search, string selected);
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
namespace CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
|
||||
/// <summary>
|
||||
/// جستجوی لیست اطلاعات بانکی طرف حساب
|
||||
/// </summary>
|
||||
public class ContractingPartyBankAccountSearchModel
|
||||
{
|
||||
/// <summary>
|
||||
/// نام طرف حساب / نام صاحب حساب
|
||||
/// </summary>
|
||||
public string ContractingPartyOrAccountHolderName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شناسه دستگاه
|
||||
/// </summary>
|
||||
public string PosTerminalId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره کارت
|
||||
/// </summary>
|
||||
public string CardNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره حساب
|
||||
/// </summary>
|
||||
public string AccountNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره شبا
|
||||
/// </summary>
|
||||
public string IBan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شمارش page
|
||||
/// </summary>
|
||||
public int PageIndex { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
namespace CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
|
||||
/// <summary>
|
||||
/// ایجاد اطلاعات بانکی طرف حساب
|
||||
/// </summary>
|
||||
public class CreateContractingPartyBankAccounts
|
||||
{
|
||||
/// <summary>
|
||||
/// آیدی طرف حساب
|
||||
/// </summary>
|
||||
public long ContractingPartyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره کارت
|
||||
/// </summary>
|
||||
public string CardNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// نام صاحب حساب
|
||||
/// </summary>
|
||||
public string AccountHolderName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره حساب
|
||||
/// </summary>
|
||||
public string AccountNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره شبا
|
||||
/// </summary>
|
||||
public string IBan { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// آیا احزار هویت شده است یا خیر
|
||||
/// </summary>
|
||||
public bool IsAuth { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
|
||||
/// <summary>
|
||||
/// لیست اطلاعات بانکی طرف حساب
|
||||
/// </summary>
|
||||
public class GetContractingPartyBankAccountViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// لیست حساب های بانکی
|
||||
/// </summary>
|
||||
public List<ContractingPartyBankAccountsItemViewModel> BankAccountsItems { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// آیدی طرف حساب
|
||||
/// </summary>
|
||||
public long ContractingPartyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// نام طرف حساب
|
||||
/// </summary>
|
||||
public string ContractingPartyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// نام کارگاه
|
||||
/// </summary>
|
||||
public string WorkshopName { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// حساب بانکی طرف حساب
|
||||
/// </summary>
|
||||
public class ContractingPartyBankAccountsItemViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// نام صاحب حساب
|
||||
/// </summary>
|
||||
public string AccountHolderName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره کارت
|
||||
/// </summary>
|
||||
public string CardNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره حساب
|
||||
/// </summary>
|
||||
public string AccountNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// شماره شبا
|
||||
/// </summary>
|
||||
public string IBan { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Security.AccessControl;
|
||||
using System.Threading.Tasks;
|
||||
using System.Transactions;
|
||||
using _0_Framework.Application;
|
||||
using CompanyManagment.App.Contracts.OriginalTitle;
|
||||
|
||||
namespace CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
|
||||
/// <summary>
|
||||
/// اپلیکیشن اطلاعات بانکی طرف حساب
|
||||
/// </summary>
|
||||
public interface IContractingPartyBankAccountsApplication
|
||||
{
|
||||
/// <summary>
|
||||
/// ایجاد اطلاعات بانکی طرف حساب
|
||||
/// </summary>
|
||||
/// <param name="command"></param>
|
||||
/// <returns></returns>
|
||||
Task<OperationResult> Create(CreateContractingPartyBankAccounts command);
|
||||
|
||||
/// <summary>
|
||||
/// لیست اطلاعات طرف حساب بانکی
|
||||
/// </summary>
|
||||
/// <param name="searchModel"></param>
|
||||
/// <returns></returns>
|
||||
Task<OperationResult<List<GetContractingPartyBankAccountViewModel>>> GetList(
|
||||
ContractingPartyBankAccountSearchModel searchModel);
|
||||
|
||||
/// <summary>
|
||||
/// سلکت لیست جستجو برای نام طرف حساب / صاحب حساب
|
||||
/// </summary>
|
||||
/// <param name="search">نام جستجو</param>
|
||||
/// <param name="selected">نام سلکت شده</param>
|
||||
/// <returns></returns>
|
||||
Task<OperationResult<List<string>>> ContractingPartyOrAccountHolderNameSelectList(string search, string selected);
|
||||
|
||||
/// <summary>
|
||||
/// سلکت لیست شماره کارت
|
||||
/// </summary>
|
||||
/// <param name="search">نام جستجو</param>
|
||||
/// <param name="selected">نام سلکت شده</param>
|
||||
/// <returns></returns>
|
||||
Task<OperationResult<List<string>>> CardNumberSelectList(string search, string selected);
|
||||
|
||||
/// <summary>
|
||||
/// سلکت لیست شماره شبا
|
||||
/// </summary>
|
||||
/// <param name="search">نام جستجو</param>
|
||||
/// <param name="selected">نام سلکت شده</param>
|
||||
/// <returns></returns>
|
||||
Task<OperationResult<List<string>>> IBanSelectList(string search, string selected);
|
||||
|
||||
/// <summary>
|
||||
/// سلکت لیست شماره حساب
|
||||
/// </summary>
|
||||
/// <param name="search">نام جستجو</param>
|
||||
/// <param name="selected">نام سلکت شده</param>
|
||||
/// <returns></returns>
|
||||
Task<OperationResult<List<string>>> AccountNumberSelectList(string search, string selected);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using Company.Domain.ContarctingPartyAgg;
|
||||
using Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
||||
|
||||
namespace CompanyManagment.Application;
|
||||
|
||||
public class ContractingPartyBankAccountsApplication:IContractingPartyBankAccountsApplication
|
||||
{
|
||||
private readonly IContractingPartyBankAccountsRepository _contractingPartyBankAccountsRepository;
|
||||
private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
|
||||
|
||||
public ContractingPartyBankAccountsApplication(IContractingPartyBankAccountsRepository contractingPartyBankAccountsRepository,
|
||||
IPersonalContractingPartyRepository personalContractingPartyRepository)
|
||||
{
|
||||
_contractingPartyBankAccountsRepository = contractingPartyBankAccountsRepository;
|
||||
_personalContractingPartyRepository = personalContractingPartyRepository;
|
||||
}
|
||||
|
||||
public async Task<OperationResult> Create(CreateContractingPartyBankAccounts command)
|
||||
{
|
||||
var operationResult = new OperationResult();
|
||||
|
||||
if (!_personalContractingPartyRepository.Exists(x => x.id == command.ContractingPartyId))
|
||||
return operationResult.Failed("طرف حساب مورد نظر یافت نشد");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(command.CardNumber))
|
||||
return operationResult.Failed("شماره کارت خود را وارد کنید");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(command.AccountNumber))
|
||||
return operationResult.Failed("شماره حساب خود را وارد کنید");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(command.IBan))
|
||||
return operationResult.Failed("شماره شبا خود را وارد کنید");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(command.AccountHolderName))
|
||||
return operationResult.Failed("نام صاحب حساب را وارد کنید");
|
||||
|
||||
var entity = new ContractingPartyBankAccount(command.ContractingPartyId, command.CardNumber,
|
||||
command.AccountHolderName,command.AccountNumber, command.IBan,command.IsAuth);
|
||||
|
||||
await _contractingPartyBankAccountsRepository.CreateAsync(entity);
|
||||
|
||||
await _contractingPartyBankAccountsRepository.SaveChangesAsync();
|
||||
|
||||
return operationResult.Succcedded();
|
||||
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<GetContractingPartyBankAccountViewModel>>> GetList(
|
||||
ContractingPartyBankAccountSearchModel searchModel)
|
||||
{
|
||||
return await _contractingPartyBankAccountsRepository.GetList(searchModel);
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> ContractingPartyOrAccountHolderNameSelectList(string search,
|
||||
string selected)
|
||||
{
|
||||
return await _contractingPartyBankAccountsRepository.ContractingPartyOrAccountHolderNameSelectList(search, selected);
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> CardNumberSelectList(string search, string selected)
|
||||
{
|
||||
return await _contractingPartyBankAccountsRepository.CardNumberSelectList(search, selected);
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> IBanSelectList(string search, string selected)
|
||||
{
|
||||
return await _contractingPartyBankAccountsRepository.IBanSelectList(search, selected);
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> AccountNumberSelectList(string search, string selected)
|
||||
{
|
||||
return await _contractingPartyBankAccountsRepository.AccountNumberSelectList(search, selected);
|
||||
}
|
||||
}
|
||||
@@ -154,7 +154,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
|
||||
}
|
||||
|
||||
var offDays = command.OffDays.Select(x => new WeeklyOffDay(x)).ToList();
|
||||
var offDays = command.OffDays?.Select(x => new WeeklyOffDay(x)).ToList()??[];
|
||||
|
||||
var record = new CustomizeWorkshopSettings(workshopId, shiftCollection, command.LeavePermittedDays,
|
||||
command.WorkshopShiftStatus, command.HolidayWork, offDays);
|
||||
@@ -390,7 +390,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
//var commandOffDayHashSet = command.WeeklyOffDays.ToHashSet();
|
||||
var commandOffDayHashSet = command.WeeklyOffDays?.ToHashSet() ?? [];
|
||||
|
||||
var groupOffDayHashSet = customizeWorkshopGroupSettings.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet();
|
||||
var groupOffDayHashSet = customizeWorkshopGroupSettings.WeeklyOffDays?.Select(x => x.DayOfWeek).ToHashSet()??[];
|
||||
|
||||
if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular)
|
||||
{
|
||||
@@ -669,7 +669,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
|
||||
#endregion
|
||||
|
||||
var offDays = weeklyOffDays.Select(x => new WeeklyOffDay(x)).ToList();
|
||||
var offDays = weeklyOffDays?.Select(x => new WeeklyOffDay(x)).ToList()??[];
|
||||
|
||||
using var transActionScope = new TransactionScope();
|
||||
entity.ChangeWorkshopShifts(shiftCollection, workshopShiftStatus, holidayWork, offDays);
|
||||
@@ -723,7 +723,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
//var commandOffDayHashSet = command.OffDayOfWeeks.ToHashSet();
|
||||
var commandOffDayHashSet = command.OffDayOfWeeks?.ToHashSet() ?? [];
|
||||
|
||||
var workshopOffDayHashSet = workshopSettings.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet();
|
||||
var workshopOffDayHashSet = workshopSettings.WeeklyOffDays?.Select(x => x.DayOfWeek).ToHashSet()??[];
|
||||
|
||||
if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular)
|
||||
{
|
||||
@@ -871,7 +871,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
bool isChanged = false;
|
||||
|
||||
var commandOffDayHashSet = command.WeeklyOffDays?.ToHashSet()??[];
|
||||
var groupOffDayHashSet = groupSettings.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet();
|
||||
var groupOffDayHashSet = groupSettings.WeeklyOffDays?.Select(x => x.DayOfWeek).ToHashSet()??[];
|
||||
|
||||
if (command.WorkshopShiftStatus == WorkshopShiftStatus.Regular)
|
||||
{
|
||||
@@ -1034,7 +1034,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
|
||||
}
|
||||
|
||||
var weeklyOffDays = command.WeeklyOffDays.Select(x => new WeeklyOffDay(x)).ToList();
|
||||
var weeklyOffDays = command.WeeklyOffDays?.Select(x => new WeeklyOffDay(x)).ToList()??[];
|
||||
using var transaction = new TransactionScope();
|
||||
|
||||
entity.SimpleEdit(employeesShifts, command.IrregularShift, command.WorkshopShiftStatus, command.BreakTime,
|
||||
@@ -1442,7 +1442,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
|
||||
var commandOffDayHashSet = command.WeeklyOffDays?.ToHashSet()??[];
|
||||
|
||||
var entityOffDayHashSet = entity.WeeklyOffDays.Select(x => x.DayOfWeek).ToHashSet();
|
||||
var entityOffDayHashSet = entity.WeeklyOffDays?.Select(x => x.DayOfWeek).ToHashSet()??[];
|
||||
|
||||
bool isChanged;
|
||||
if (fridayPay == entity.FridayPay && overTimePay == entity.OverTimePay && baseYearsPay == entity.BaseYearsPay && bonusesPay == entity.BonusesPay
|
||||
@@ -1536,7 +1536,7 @@ public class CustomizeWorkshopSettingsApplication(ICustomizeWorkshopSettingsRepo
|
||||
}).ToList(),
|
||||
//FridayWork = entity.FridayWork,
|
||||
HolidayWork = entity.HolidayWork,
|
||||
WeeklyOffDays = entity.WeeklyOffDays.Select(x=>x.DayOfWeek).ToList(),
|
||||
WeeklyOffDays = entity.WeeklyOffDays?.Select(x=>x.DayOfWeek).ToList()??[],
|
||||
CustomizeRotatingShiftsViewModels = entity.CustomizeRotatingShifts.Select(x => new CustomizeRotatingShiftsViewModel()
|
||||
{
|
||||
StartTime = x.StartTime.ToString("HH:mm"),
|
||||
|
||||
@@ -13,6 +13,7 @@ using Company.Domain.ContactUsAgg;
|
||||
using Company.Domain.ContarctingPartyAgg;
|
||||
using Company.Domain.ContractAgg;
|
||||
using Company.Domain.ContractingPartyAccountAgg;
|
||||
using Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
using Company.Domain.CrossJobAgg;
|
||||
using Company.Domain.CrossJobGuildAgg;
|
||||
using Company.Domain.CrossJobItemsAgg;
|
||||
@@ -115,6 +116,7 @@ using Company.Domain.YearlySalaryItemsAgg;
|
||||
using Company.Domain.YearlysSalaryTitleAgg;
|
||||
using CompanyManagment.EFCore.Mapping;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
|
||||
using Evidence = Company.Domain.Evidence.Evidence;
|
||||
using Zone = Company.Domain.ZoneAgg.Zone;
|
||||
|
||||
@@ -183,6 +185,8 @@ public class CompanyContext : DbContext
|
||||
public DbSet<EmployeeAuthorizeTemp> EmployeeAuthorizeTemps { get; set; }
|
||||
public DbSet<AdminMonthlyOverview> AdminMonthlyOverviews { get; set; }
|
||||
public DbSet<PaymentTransaction> PaymentTransactions{ get; set; }
|
||||
|
||||
public DbSet<ContractingPartyBankAccount> ContractingPartyBankAccounts { get; set; }
|
||||
#endregion
|
||||
|
||||
#region Pooya
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace CompanyManagment.EFCore.Mapping;
|
||||
|
||||
public class ContractingPartyBankAccountMapping:IEntityTypeConfiguration<ContractingPartyBankAccount>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<ContractingPartyBankAccount> builder)
|
||||
{
|
||||
builder.ToTable("ContractingPartyBankAccounts");
|
||||
builder.Property(x => x.AccountHolderName).HasMaxLength(200);
|
||||
builder.Property(x => x.AccountNumber).HasMaxLength(50);
|
||||
builder.Property(x => x.CardNumber).HasMaxLength(50);
|
||||
builder.Property(x=>x.IBan).HasMaxLength(50);
|
||||
|
||||
builder.HasOne(x=>x.ContractingParty)
|
||||
.WithMany(x=>x.ContractingPartyBankAccounts)
|
||||
.HasForeignKey(x=>x.ContractingPartyId);
|
||||
}
|
||||
}
|
||||
10110
CompanyManagment.EFCore/Migrations/20250726105745_initial contracitngpartybank accounts.Designer.cs
generated
Normal file
10110
CompanyManagment.EFCore/Migrations/20250726105745_initial contracitngpartybank accounts.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,52 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace CompanyManagment.EFCore.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class initialcontracitngpartybankaccounts : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "ContractingPartyBankAccounts",
|
||||
columns: table => new
|
||||
{
|
||||
id = table.Column<long>(type: "bigint", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
ContractingPartyId = table.Column<long>(type: "bigint", nullable: false),
|
||||
CardNumber = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||
AccountHolderName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
|
||||
AccountNumber = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||
IBan = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||
IsAuth = table.Column<bool>(type: "bit", nullable: false),
|
||||
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_ContractingPartyBankAccounts", x => x.id);
|
||||
table.ForeignKey(
|
||||
name: "FK_ContractingPartyBankAccounts_PersonalContractingParties_ContractingPartyId",
|
||||
column: x => x.ContractingPartyId,
|
||||
principalTable: "PersonalContractingParties",
|
||||
principalColumn: "id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_ContractingPartyBankAccounts_ContractingPartyId",
|
||||
table: "ContractingPartyBankAccounts",
|
||||
column: "ContractingPartyId");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "ContractingPartyBankAccounts");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -872,6 +872,46 @@ namespace CompanyManagment.EFCore.Migrations
|
||||
b.ToTable("ContractingPartyAccount", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Company.Domain.ContractingPartyBankAccountsAgg.ContractingPartyBankAccounts", b =>
|
||||
{
|
||||
b.Property<long>("id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("bigint");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<long>("id"));
|
||||
|
||||
b.Property<string>("AccountHolderName")
|
||||
.HasMaxLength(200)
|
||||
.HasColumnType("nvarchar(200)");
|
||||
|
||||
b.Property<string>("AccountNumber")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("nvarchar(50)");
|
||||
|
||||
b.Property<string>("CardNumber")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("nvarchar(50)");
|
||||
|
||||
b.Property<long>("ContractingPartyId")
|
||||
.HasColumnType("bigint");
|
||||
|
||||
b.Property<DateTime>("CreationDate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<string>("IBan")
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("nvarchar(50)");
|
||||
|
||||
b.Property<bool>("IsAuth")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.HasKey("id");
|
||||
|
||||
b.HasIndex("ContractingPartyId");
|
||||
|
||||
b.ToTable("ContractingPartyBankAccounts", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b =>
|
||||
{
|
||||
b.Property<long>("id")
|
||||
@@ -6604,6 +6644,17 @@ namespace CompanyManagment.EFCore.Migrations
|
||||
b.Navigation("PersonalContractingParty");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Company.Domain.ContractingPartyBankAccountsAgg.ContractingPartyBankAccounts", b =>
|
||||
{
|
||||
b.HasOne("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", "ContractingParty")
|
||||
.WithMany("ContractingPartyBankAccounts")
|
||||
.HasForeignKey("ContractingPartyId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("ContractingParty");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Company.Domain.CrossJobAgg.CrossJob", b =>
|
||||
{
|
||||
b.HasOne("Company.Domain.CrossJobGuildAgg.CrossJobGuild", "CrossJobGuild")
|
||||
@@ -9759,6 +9810,8 @@ namespace CompanyManagment.EFCore.Migrations
|
||||
|
||||
modelBuilder.Entity("Company.Domain.ContarctingPartyAgg.PersonalContractingParty", b =>
|
||||
{
|
||||
b.Navigation("ContractingPartyBankAccounts");
|
||||
|
||||
b.Navigation("Employers");
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.InfraStructure;
|
||||
using Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace CompanyManagment.EFCore.Repository;
|
||||
|
||||
public class ContractingPartyBankAccountsRepository : RepositoryBase<long, ContractingPartyBankAccount>,
|
||||
IContractingPartyBankAccountsRepository
|
||||
{
|
||||
private readonly CompanyContext _context;
|
||||
|
||||
public ContractingPartyBankAccountsRepository(CompanyContext context) : base(context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<GetContractingPartyBankAccountViewModel>>> GetList(
|
||||
ContractingPartyBankAccountSearchModel searchModel)
|
||||
{
|
||||
var query = _context.ContractingPartyBankAccounts.AsQueryable();
|
||||
if (!string.IsNullOrEmpty(searchModel.CardNumber))
|
||||
query = query.Where(x => x.CardNumber.Contains(searchModel.CardNumber));
|
||||
|
||||
if (!string.IsNullOrEmpty(searchModel.AccountNumber))
|
||||
query = query.Where(x => x.AccountNumber.Contains(searchModel.AccountNumber));
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(searchModel.IBan))
|
||||
query = query.Where(x => x.IBan.Contains(searchModel.IBan));
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(searchModel.ContractingPartyOrAccountHolderName))
|
||||
query = query.Where(x => x.AccountHolderName
|
||||
.Contains(searchModel.ContractingPartyOrAccountHolderName) ||
|
||||
(x.ContractingParty.FName + " " + x.ContractingParty.LName).Contains(searchModel
|
||||
.ContractingPartyOrAccountHolderName));
|
||||
|
||||
var grouped = query
|
||||
.GroupBy(x => new { x.ContractingPartyId, x.ContractingParty.FName, x.ContractingParty.LName })
|
||||
.Select(g => new GetContractingPartyBankAccountViewModel()
|
||||
{
|
||||
ContractingPartyId = g.Key.ContractingPartyId,
|
||||
ContractingPartyName = g.Key.FName + " " + g.Key.LName,
|
||||
BankAccountsItems = g.Select(x => new ContractingPartyBankAccountsItemViewModel
|
||||
{
|
||||
AccountHolderName = x.AccountHolderName,
|
||||
AccountNumber = x.AccountNumber,
|
||||
CardNumber = x.CardNumber,
|
||||
IBan = x.IBan,
|
||||
}).ToList()
|
||||
});
|
||||
|
||||
var result = await grouped
|
||||
.Skip(searchModel.PageIndex)
|
||||
.Take(30)
|
||||
.ToListAsync();
|
||||
|
||||
return new OperationResult<List<GetContractingPartyBankAccountViewModel>>().Succcedded(result);
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> ContractingPartyOrAccountHolderNameSelectList(string search,
|
||||
string selected)
|
||||
{
|
||||
var accountHolderQuery = _context.ContractingPartyBankAccounts.Select(x => x.AccountHolderName);
|
||||
var contractingPartyNameQuery = _context.ContractingPartyBankAccounts.Select(x=>x.ContractingParty.FName + " " + x.ContractingParty.LName);
|
||||
if (!string.IsNullOrWhiteSpace(search))
|
||||
{
|
||||
accountHolderQuery = accountHolderQuery.Where(x=>x.Contains(search));
|
||||
contractingPartyNameQuery = contractingPartyNameQuery.Where(x => x.Contains(search));
|
||||
}
|
||||
|
||||
var result = await accountHolderQuery.Union(contractingPartyNameQuery).Take(50).ToListAsync();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(selected))
|
||||
{
|
||||
result.Add(selected);
|
||||
}
|
||||
|
||||
return new OperationResult<List<string>>().Succcedded(result.Distinct().ToList());
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> IBanSelectList(string search, string selected)
|
||||
{
|
||||
var iBanQuery = _context.ContractingPartyBankAccounts.Select(x=>x.IBan);
|
||||
if (!string.IsNullOrWhiteSpace(search))
|
||||
{
|
||||
iBanQuery = iBanQuery.Where(x => x.Contains(search));
|
||||
}
|
||||
|
||||
var result = await iBanQuery.Take(50).ToListAsync();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(selected))
|
||||
{
|
||||
result.Add(selected);
|
||||
}
|
||||
|
||||
return new OperationResult<List<string>>().Succcedded(result.Distinct().ToList());
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> CardNumberSelectList(string search, string selected)
|
||||
{
|
||||
var cardNumberQuery = _context.ContractingPartyBankAccounts.Select(x=>x.CardNumber);
|
||||
if (!string.IsNullOrWhiteSpace(search))
|
||||
{
|
||||
cardNumberQuery = cardNumberQuery.Where(x => x.Contains(search));
|
||||
}
|
||||
|
||||
var result = await cardNumberQuery.Take(50).ToListAsync();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(selected))
|
||||
{
|
||||
result.Add(selected);
|
||||
}
|
||||
|
||||
return new OperationResult<List<string>>().Succcedded(result.Distinct().ToList());
|
||||
}
|
||||
|
||||
public async Task<OperationResult<List<string>>> AccountNumberSelectList(string search, string selected)
|
||||
{
|
||||
var accountNumberQuery = _context.ContractingPartyBankAccounts.Select(x=>x.IBan);
|
||||
if (!string.IsNullOrWhiteSpace(search))
|
||||
{
|
||||
accountNumberQuery = accountNumberQuery.Where(x => x.Contains(search));
|
||||
}
|
||||
|
||||
var result = await accountNumberQuery.Take(50).ToListAsync();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(selected))
|
||||
{
|
||||
result.Add(selected);
|
||||
}
|
||||
|
||||
return new OperationResult<List<string>>().Succcedded(result.Distinct().ToList());
|
||||
}
|
||||
}
|
||||
@@ -71,6 +71,8 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
public async Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(long accountId,
|
||||
ClientFinancialStatementSearchModel searchModel)
|
||||
{
|
||||
bool searched = false;
|
||||
|
||||
var contractingPartyId = _context.ContractingPartyAccounts.Any(x => x.AccountId == accountId) ?
|
||||
_context.ContractingPartyAccounts.FirstOrDefault(x => x.AccountId == accountId)!.PersonalContractingPartyId : 0;
|
||||
|
||||
@@ -86,9 +88,11 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
var resTransaction = resStatement.FinancialTransactionList.ToList();
|
||||
|
||||
#region Search
|
||||
|
||||
|
||||
if (searchModel.FromAmount > 0 || searchModel.ToAmount > 0)
|
||||
{
|
||||
searched = true;
|
||||
if (searchModel.FromAmount > 0 && searchModel.ToAmount > 0)
|
||||
{
|
||||
resTransaction = resTransaction.Where(x => (x.Deptor >= searchModel.FromAmount && x.Deptor <= searchModel.FromAmount) || (x.Creditor >= searchModel.FromAmount && x.Creditor <= searchModel.FromAmount)).ToList();
|
||||
@@ -104,6 +108,8 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(searchModel.FromDate) && !string.IsNullOrWhiteSpace(searchModel.ToDate))
|
||||
{
|
||||
searched = true;
|
||||
|
||||
if (searchModel.FromDate.TryToGeorgianDateTime(out var fromDate) == false)
|
||||
throw new BadRequestException("تاریخ وارد شده نامعتبر است");
|
||||
|
||||
@@ -115,6 +121,8 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
|
||||
if (searchModel.Type != null)
|
||||
{
|
||||
searched = true;
|
||||
|
||||
var type = searchModel.Type switch
|
||||
{
|
||||
FinancialTransactionType.Credit => "credit",
|
||||
@@ -133,15 +141,18 @@ public class FinancialStatmentRepository : RepositoryBase<long, FinancialStatmen
|
||||
TotalDebt = resTransaction.Sum(x => x.Deptor),
|
||||
Transactions = resTransaction.OrderBy(t => t.TdateGr).Select(t =>
|
||||
{
|
||||
|
||||
if (t.TypeOfTransaction == "debt")
|
||||
if (!searched)
|
||||
{
|
||||
balance += t.Deptor;
|
||||
}
|
||||
else
|
||||
{
|
||||
balance -= t.Creditor;
|
||||
if (t.TypeOfTransaction == "debt")
|
||||
{
|
||||
balance += t.Deptor;
|
||||
}
|
||||
else
|
||||
{
|
||||
balance -= t.Creditor;
|
||||
}
|
||||
}
|
||||
|
||||
return new ClientFinancialTransactionViewModel()
|
||||
{
|
||||
DateTimeGr = t.TdateGr,
|
||||
|
||||
@@ -825,10 +825,16 @@ public class RollCallMandatoryRepository : RepositoryBase<long, RollCall>, IRoll
|
||||
#region SaveRollCall
|
||||
|
||||
GroupedRollCalls = groupedRollCall,
|
||||
TotalWorkingTimeSpan = sumSpansWhitOutleaves,
|
||||
//کارکرد واقعی - محاسبات شامل مرخصی افزوده شده
|
||||
TotalWorkingTimeSpan = sumSpans,
|
||||
// ساعت استراحت
|
||||
TotalBreakTimeSpan = totalBreakTime,
|
||||
TotalPresentTimeSpan = sumSpansWhitOutleaves + totalBreakTime,
|
||||
// ساعت حضور - بدون مرخصی افزده شده
|
||||
TotalPresentTimeSpan = sumSpansWhitOutleaves,
|
||||
|
||||
// مرخصی استحقاقی
|
||||
TotalPaidLeave = totalLeaveSpan,
|
||||
//مرخصی استعلاجی
|
||||
TotalSickLeave = new TimeSpan(sickLeaveTimeSpans.Sum(x => x.Ticks)),
|
||||
#endregion
|
||||
};
|
||||
|
||||
@@ -209,8 +209,10 @@ using Company.Domain.ContactUsAgg;
|
||||
using CompanyManagment.App.Contracts.ContactUs;
|
||||
using Company.Domain.EmployeeAuthorizeTempAgg;
|
||||
using Company.Domain.AdminMonthlyOverviewAgg;
|
||||
using Company.Domain.ContractingPartyBankAccountsAgg;
|
||||
using Company.Domain.PaymentTransactionAgg;
|
||||
using CompanyManagment.App.Contracts.AdminMonthlyOverview;
|
||||
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
using CompanyManagment.App.Contracts.PaymentTransaction;
|
||||
|
||||
namespace PersonalContractingParty.Config;
|
||||
@@ -440,7 +442,10 @@ public class PersonalBootstrapper
|
||||
services.AddTransient<IAdminMonthlyOverviewApplication, AdminMonthlyOverviewApplication>();
|
||||
|
||||
services.AddTransient<IPaymentTransactionRepository, PaymentTransactionRepository>();
|
||||
services.AddTransient<IPaymentTransactionApplication, PaymentTransactionApplication>();
|
||||
services.AddTransient<IPaymentTransactionApplication, PaymentTransactionApplication>();
|
||||
|
||||
services.AddTransient<IContractingPartyBankAccountsApplication, ContractingPartyBankAccountsApplication>();
|
||||
services.AddTransient<IContractingPartyBankAccountsRepository, ContractingPartyBankAccountsRepository>();
|
||||
#endregion
|
||||
#region Pooya
|
||||
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
using _0_Framework.Application;
|
||||
using Bogus;
|
||||
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using ServiceHost.BaseControllers;
|
||||
|
||||
namespace ServiceHost.Areas.Admin.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// کنترلر بانک اطلاعات شماره حساب
|
||||
/// </summary>
|
||||
public class ContractingPartyBankAccountController : AdminBaseController
|
||||
{
|
||||
private readonly IContractingPartyBankAccountsApplication _contractingPartyBankAccountsApplication;
|
||||
|
||||
public ContractingPartyBankAccountController(IContractingPartyBankAccountsApplication contractingPartyBankAccountsApplication)
|
||||
{
|
||||
_contractingPartyBankAccountsApplication = contractingPartyBankAccountsApplication;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// لیست اطلاعات بانک اطلاعات بانکی طرف حساب
|
||||
/// </summary>
|
||||
/// <param name="searchModel">سرچ</param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<OperationResult<List<GetContractingPartyBankAccountViewModel>>> GetList(ContractingPartyBankAccountSearchModel searchModel)
|
||||
{
|
||||
var res =await _contractingPartyBankAccountsApplication.GetList(searchModel);
|
||||
return res;
|
||||
}
|
||||
|
||||
[HttpGet("fake")]
|
||||
public IActionResult GetFakeBankAccounts()
|
||||
{
|
||||
var bankAccountsFaker = new Faker<ContractingPartyBankAccountsItemViewModel>("fa")
|
||||
.RuleFor(x => x.AccountHolderName, f => f.Name.FullName())
|
||||
.RuleFor(x => x.CardNumber, f => f.Finance.CreditCardNumber())
|
||||
.RuleFor(x => x.AccountNumber, f => f.Finance.Account())
|
||||
.RuleFor(x => x.IBan, f => $"IR{f.Random.Number(10_000_000, 99_999_999)}{f.Random.Number(10_000_000, 99_999_999)}");
|
||||
|
||||
var viewModelFaker = new Faker<GetContractingPartyBankAccountViewModel>("fa")
|
||||
.RuleFor(x => x.ContractingPartyId, f => f.Random.Long(1000, 9999))
|
||||
.RuleFor(x => x.ContractingPartyName, f => f.Company.CompanyName())
|
||||
.RuleFor(x => x.WorkshopName, f => f.Address.City())
|
||||
.RuleFor(x => x.BankAccountsItems, f => bankAccountsFaker.Generate(f.Random.Int(1, 5)));
|
||||
|
||||
var fakeData = viewModelFaker.Generate(new Random().Next(1,35));
|
||||
return Ok(fakeData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ایجاد
|
||||
/// </summary>
|
||||
/// <param name="command"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<OperationResult> Create([FromBody] CreateContractingPartyBankAccounts command)
|
||||
{
|
||||
var operationResult = await _contractingPartyBankAccountsApplication.Create(command);
|
||||
return operationResult;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1028,16 +1028,17 @@ public class IndexModel : PageModel
|
||||
TotalDayOfBunosesCompute = bunosesPay.Bunoses > 0 ? $"{bunosesPay.TotalDayCompute}" : "0",
|
||||
HolidayWorking = workshop.WorkshopHolidayWorking,
|
||||
ShiftWork = workingHours.ShiftWork,
|
||||
|
||||
//کارکرد واقعی - محاسبات شامل مرخصی افزوده شده
|
||||
TotalWorkingTimeSpan = mandatoryCompute.TotalWorkingTimeSpan,
|
||||
|
||||
//ساعت استراحت
|
||||
TotalBreakTimeSpan = mandatoryCompute.TotalBreakTimeSpan,
|
||||
|
||||
// ساعت حضور - بدون مرخصی افزده شده
|
||||
TotalPresentTimeSpan = mandatoryCompute.TotalPresentTimeSpan,
|
||||
|
||||
//مدت مرخصی استحقاقی
|
||||
TotalPaidLeave = mandatoryCompute.TotalPaidLeave,
|
||||
|
||||
//مدت مرخصی استعلاجی
|
||||
TotalSickLeave = mandatoryCompute.TotalSickLeave,
|
||||
//لیست حضورغیاب جهت ذخیره سازی
|
||||
GroupedRollCalls = mandatoryCompute.GroupedRollCalls,
|
||||
|
||||
HasInsuranceChekoutOverTime = workshop.InsuranceCheckoutOvertime
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
با استفاده از این دکمه می توانید تصفیه حساب ها را بصورت گروهی امضاء نمایید
|
||||
</span>
|
||||
</span>
|
||||
<span class="tooltip2-container">
|
||||
<span class="tooltip2-container" permission="20222">
|
||||
<button type="button" style="padding: 5px 7px 0px 7px;top: 2px" class="btn btn-icon waves-effect waves-light btn-danger m-b-5 rad" id="checkUnSign" onclick="deleteAllSignature()">
|
||||
<i class="ion-close-circled" style="color: #fff;font-size: 17px"></i>
|
||||
</button>
|
||||
|
||||
@@ -208,27 +208,45 @@
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<input asp-for="EditEmployeChildrenList[index].DateOfBirth" class="items childInput persianDateInput ltr text-center childBirth col-md-12 col-lg-12 col-sm-12 col-xs-12" type="text" placeholder="" maxlength="10">
|
||||
</div>
|
||||
<div>
|
||||
@if (index == 0)
|
||||
{
|
||||
<a>
|
||||
<i class="fa fa-trash trash" aria-hidden="true" style="color: #818181;">
|
||||
</i>
|
||||
@* <input type="checkbox" style="display:none" asp-for="EditEmployeChildrenList[0].IsRemoved"/> *@
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a id="delete_@index" class="delete">
|
||||
<i class="fa fa-trash trash trash-icon" aria-hidden="true">
|
||||
</i>
|
||||
@*<input type="checkbox" style="display:none" asp-for="EditEmployeChildrenList[index].IsRemoved"/> *@
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
<input type="checkbox" style="display:none" asp-for="EditEmployeChildrenList[index].IsRemoved"/>
|
||||
<input type="hidden" asp-for="EditEmployeChildrenList[index].Id"/>
|
||||
</td>
|
||||
<div>
|
||||
@if (index == 0)
|
||||
{
|
||||
<a>
|
||||
<i class="fa fa-trash trash" aria-hidden="true" style="color: #818181;">
|
||||
</i>
|
||||
@* <input type="checkbox" style="display:none" asp-for="EditEmployeChildrenList[0].IsRemoved"/> *@
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a id="delete_@index" class="delete" >
|
||||
<i class="fa fa-trash trash trash-icon" aria-hidden="true">
|
||||
</i>
|
||||
@*<input type="checkbox" style="display:none" asp-for="EditEmployeChildrenList[index].IsRemoved"/> *@
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
<script>
|
||||
$(document).on("click", ".delete", function () {
|
||||
// پیدا کردن نزدیکترین tr به آیکون حذف کلیک شده
|
||||
var row = $(this).closest("tr");
|
||||
|
||||
// پیدا کردن input checkbox داخل این سطر
|
||||
var checkbox = row.find("input[type='checkbox']");
|
||||
|
||||
// تنظیم مقدار آن به true (یعنی checked)
|
||||
checkbox.prop("checked", true);
|
||||
|
||||
// اختیاری: حذف ظاهری سطر از جدول
|
||||
row.hide();
|
||||
});
|
||||
</script>
|
||||
|
||||
<input type="checkbox" del-data="EditEmployeChildrenList[index].Id" style="display:none" asp-for="EditEmployeChildrenList[index].IsRemoved" />
|
||||
<input type="hidden" asp-for="EditEmployeChildrenList[index].Id"/>
|
||||
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<input asp-for="EditEmployeChildrenList[index].FName" class=" items1 childInput childName col-md-12 col-lg-12 col-sm-12 col-xs-12" type="text" placeholder="" pattern="[\u0600-\u06FF\s]*">
|
||||
@@ -430,6 +448,11 @@
|
||||
<script src="~/lib/select2/js/i18n/fa.js"></script>
|
||||
<script>
|
||||
|
||||
function delChildren(deleteChildrenId){
|
||||
alert(deleteChildrenId);
|
||||
var sel = $(`input[del-data=${deleteChildrenId}]`).val();
|
||||
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#divEdit #close").click(function() {
|
||||
|
||||
@@ -413,8 +413,8 @@ public class FinancialStatmentsModel : PageModel
|
||||
var currentLastTransaction = currentTransactionsList
|
||||
.OrderByDescending(x => x.TdateGr).Select(x => x.TdateGr)
|
||||
.FirstOrDefault();
|
||||
var beforeCurrent10 = allTransactions.Where(x => x.TdateGr < currentFirstTransaction).ToList();
|
||||
var afterCurrent10 = allTransactions.Where(x => x.TdateGr > currentLastTransaction).ToList();
|
||||
var beforeCurrent10 = allTransactions.Take(pageIndex).ToList();
|
||||
var afterCurrent10 = allTransactions.Skip(pageIndex+pagination).ToList();
|
||||
result.I = beforeCurrent10.Count + 1;
|
||||
result.CurrentPageNumber = pageNumber;
|
||||
//محاسبه تراکنش های قبل از 10 تای جاری
|
||||
|
||||
@@ -485,7 +485,13 @@
|
||||
$(this).parentsUntil("#sidebar-menu > ul > li > a").addClass('active');
|
||||
};
|
||||
});
|
||||
$(document).ready(function () {
|
||||
$('.clik10').filter(function () {
|
||||
if (this.href == url || this.href == url2) {
|
||||
$(".sdf10").slideDown(350);
|
||||
/*$(".wav").addClass("subdrop");*/
|
||||
$(this).parentsUntil("#sidebar-menu > ul > li > a").addClass('active');
|
||||
};
|
||||
}); $(document).ready(function () {
|
||||
$(document).on('click', function (e) {
|
||||
var $target = $(e.target);
|
||||
if (!$target.closest('.dropdown').length &&
|
||||
|
||||
@@ -169,12 +169,12 @@
|
||||
</span>
|
||||
</a>
|
||||
<ul class="list-unstyled sdf3">
|
||||
<li permission="307"><a class="clik3" asp-page="/Company/InstitutionContracts/Index">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
||||
</svg>
|
||||
قراردادهای موسسه</a>
|
||||
</li>
|
||||
@* <li permission="307"><a class="clik3" asp-page="/Company/InstitutionContracts/Index"> *@
|
||||
@* <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;"> *@
|
||||
@* <circle cx="6.5" cy="6.5" r="6.5" fill="white"/> *@
|
||||
@* </svg> *@
|
||||
@* قراردادهای موسسه</a> *@
|
||||
@* </li> *@
|
||||
<li permission="308">
|
||||
<a class="clik3" asp-area="AdminNew" asp-page="/Company/RollCall/Index">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||
@@ -473,6 +473,36 @@
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="has_sub" permission="307">
|
||||
|
||||
<a class="waves-effect MainMenuItem">
|
||||
<div class="menuTitle">
|
||||
<i class="fa fa-folder-open"></i>
|
||||
<span> حسابداری </span>
|
||||
</div>
|
||||
<span class="pull-right">
|
||||
<i class="md md-add"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="list-unstyled sdf10">
|
||||
<li permission="307"><a class="clik10" asp-page="/Company/InstitutionContracts/Index">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
||||
</svg>
|
||||
قراردادهای موسسه</a>
|
||||
</li>
|
||||
|
||||
<li permission="307" style=";white-space: nowrap">
|
||||
<a class="clik10 " href="https://admin@(AppSetting.Value.Domain)/payment-gateway-deposits" style="width: 7px;margin: 0 6px;">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
||||
</svg>
|
||||
لیست تراکنش های درگاه پرداخت
|
||||
</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
<script src="~/assetsadminnew/assets/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/AssetsClient/libs/select2/js/select2.js"></script>
|
||||
<script src="~/AssetsClient/libs/select2/js/i18n/fa.js"></script>
|
||||
<script src="~/assetsadminnew/assets/js/jquery.mask_1.14.16.min.js"></script>
|
||||
<script src="~/assetsadminnew/assets/js/jquery-mask-v1.13.4.js"></script>
|
||||
<script src="~/assetsadminnew/assets/js/datevalidation.js"></script>
|
||||
|
||||
|
||||
@@ -299,6 +299,7 @@
|
||||
activateLink('.clik7', '.sdf7');
|
||||
activateLink('.clik8', '.sdf8');
|
||||
activateLink('.clik9', '.sdf9');
|
||||
activateLink('.clik10', '.sdf10');
|
||||
});
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
@@ -229,14 +229,14 @@
|
||||
</span>
|
||||
</a>
|
||||
<ul class="list-unstyled sdf3">
|
||||
<li permission="307">
|
||||
<a class="clik3" asp-area="Admin" asp-page="/Company/InstitutionContracts/Index">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white" />
|
||||
</svg>
|
||||
قراردادهای موسسه
|
||||
</a>
|
||||
</li>
|
||||
@* <li permission="307"> *@
|
||||
@* <a class="clik3" asp-area="Admin" asp-page="/Company/InstitutionContracts/Index"> *@
|
||||
@* <svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;"> *@
|
||||
@* <circle cx="6.5" cy="6.5" r="6.5" fill="white" /> *@
|
||||
@* </svg> *@
|
||||
@* قراردادهای موسسه *@
|
||||
@* </a> *@
|
||||
@* </li> *@
|
||||
<li permission="308">
|
||||
<a class="clik3" asp-area="AdminNew" asp-page="/Company/RollCall/Index">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||
@@ -621,6 +621,36 @@
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
<li class="has_sub" permission="307">
|
||||
|
||||
<a class="waves-effect MainMenuItem">
|
||||
<div class="menuTitle">
|
||||
<i class="fa fa-folder-open"></i>
|
||||
<span> حسابداری </span>
|
||||
</div>
|
||||
<span class="pull-right">
|
||||
<i class="md md-add"></i>
|
||||
</span>
|
||||
</a>
|
||||
<ul class="list-unstyled sdf10">
|
||||
<li permission="307"><a class="clik10" asp-area="Admin" asp-page="/Company/InstitutionContracts/Index">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg" style="width: 7px;margin: 0 6px;">
|
||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
||||
</svg>
|
||||
قراردادهای موسسه</a>
|
||||
</li>
|
||||
|
||||
<li permission="307" style=";white-space: nowrap">
|
||||
<a class="clik10" href="https://admin@(AppSetting.Value.Domain)/payment-gateway-deposits" style="width: 7px;margin: 0 6px;">
|
||||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="6.5" cy="6.5" r="6.5" fill="white"/>
|
||||
</svg>
|
||||
لیست تراکنش های درگاه پرداخت
|
||||
</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
41
ServiceHost/Areas/Client/Controllers/WorkflowController.cs
Normal file
41
ServiceHost/Areas/Client/Controllers/WorkflowController.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using _0_Framework.Application;
|
||||
using CompanyManagment.App.Contracts.EmployeeDocuments;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using ServiceHost.BaseControllers;
|
||||
using WorkFlow.Application.Contracts.WorkFlow;
|
||||
|
||||
namespace ServiceHost.Areas.Client.Controllers;
|
||||
|
||||
public class WorkflowController:ClientBaseController
|
||||
{
|
||||
private readonly IAuthHelper _authHelper;
|
||||
private readonly IWorkFlowApplication _workFlowApplication;
|
||||
private readonly IEmployeeDocumentsApplication _employeeDocumentsApplication;
|
||||
private readonly long _workshopId;
|
||||
|
||||
|
||||
public WorkflowController(IAuthHelper authHelper, IWorkFlowApplication workFlowApplication,IPasswordHasher passwordHasher, IEmployeeDocumentsApplication employeeDocumentsApplication)
|
||||
{
|
||||
_authHelper = authHelper;
|
||||
_workFlowApplication = workFlowApplication;
|
||||
_employeeDocumentsApplication = employeeDocumentsApplication;
|
||||
var workshopHash = _authHelper.GetWorkshopSlug();
|
||||
_workshopId = passwordHasher.SlugDecrypt(workshopHash);
|
||||
}
|
||||
|
||||
[HttpGet("menu-count")]
|
||||
public async Task<IActionResult> OnGetCountWorkFlowLayout()
|
||||
{
|
||||
var currentAccountId = _authHelper.CurrentAccountId();
|
||||
int countWorkFlowResult = await _workFlowApplication.GetCountAllWorkFlows(_workshopId, currentAccountId);
|
||||
int countWorkflowRollCallResult = await _workFlowApplication.GetAllRollCallCount(_workshopId);
|
||||
int countWorkflowUploadDocument = await _workFlowApplication.GetAllEmployeeDocuments(_workshopId, currentAccountId);
|
||||
return new JsonResult(new
|
||||
{
|
||||
success = true,
|
||||
countWorkFlow = countWorkFlowResult,
|
||||
countWorkflowRollCall = countWorkflowRollCallResult,
|
||||
countWorkflowUploadDocument = countWorkflowUploadDocument
|
||||
});
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,534 +1,33 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.RazorPages;
|
||||
using _0_Framework.Application;
|
||||
using _0_Framework.Application.Sms;
|
||||
using AccountManagement.Application.Contracts.Account;
|
||||
using AccountManagement.Domain.AccountAgg;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Newtonsoft.Json;
|
||||
using System.Security.Claims;
|
||||
using _0_Framework.Application.UID;
|
||||
using AccountManagement.Application.Contracts.CameraAccount;
|
||||
using CompanyManagment.EFCore;
|
||||
using Company.Domain.EmployeeAgg;
|
||||
using Company.Domain.EmployeeComputeOptionsAgg;
|
||||
using Company.Domain.ReportAgg;
|
||||
using Company.Domain.RollCallAgg;
|
||||
using Company.Domain.RollCallAgg.DomainService;
|
||||
using Company.Domain.YearlySalaryAgg;
|
||||
using CompanyManagment.App.Contracts.AndroidApkVersion;
|
||||
using CompanyManagment.App.Contracts.File1;
|
||||
using CompanyManagment.App.Contracts.InstitutionPlan;
|
||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using IUidService = _0_Framework.Application.UID.IUidService;
|
||||
|
||||
using _0_Framework.Application;
|
||||
using AccountManagement.Application.Contracts.Account;
|
||||
|
||||
namespace ServiceHost.Pages
|
||||
{
|
||||
public class IndexModel : PageModel
|
||||
{
|
||||
public class IndexModel : PageModel
|
||||
{
|
||||
private readonly IAuthHelper _authHelper;
|
||||
private readonly IAccountApplication _accountApplication;
|
||||
|
||||
public string Mess { get; set; }
|
||||
[BindProperty]
|
||||
public string Username { get; set; }
|
||||
[BindProperty]
|
||||
public string Password { get; set; }
|
||||
[BindProperty]
|
||||
public string CaptchaResponse { get; set; }
|
||||
|
||||
public bool HasApkToDownload { get; set; }
|
||||
|
||||
private static Timer aTimer;
|
||||
public Login login;
|
||||
public AccountViewModel Search;
|
||||
private readonly ILogger<IndexModel> _logger;
|
||||
private readonly IAccountApplication _accountApplication;
|
||||
private readonly IGoogleRecaptcha _googleRecaptcha;
|
||||
private readonly ISmsService _smsService;
|
||||
private readonly IWorker _worker;
|
||||
private readonly IAuthHelper _authHelper;
|
||||
private readonly ICameraAccountApplication _cameraAccountApplication;
|
||||
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||
private readonly IAndroidApkVersionApplication _androidApkVersionApplication;
|
||||
private readonly ITemporaryClientRegistrationApplication _clientRegistrationApplication;
|
||||
private readonly IYearlySalaryRepository _yearlySalaryRepository;
|
||||
private readonly IEmployeeComputeOptionsRepository _computeOptions;
|
||||
private readonly IFileApplication _fileApplication;
|
||||
|
||||
|
||||
|
||||
|
||||
public IndexModel(ILogger<IndexModel> logger, IAccountApplication accountApplication, IGoogleRecaptcha googleRecaptcha, ISmsService smsService, IWorker worker,
|
||||
IAuthHelper authHelper, ICameraAccountApplication cameraAccountApplication, IWebHostEnvironment webHostEnvironment,
|
||||
IAndroidApkVersionApplication androidApkVersionApplication, ITemporaryClientRegistrationApplication clientRegistrationApplication, IYearlySalaryRepository yearlySalaryRepository, IEmployeeComputeOptionsRepository computeOptions, IFileApplication fileApplication)
|
||||
{
|
||||
_logger = logger;
|
||||
_accountApplication = accountApplication;
|
||||
_googleRecaptcha = googleRecaptcha;
|
||||
_smsService = smsService;
|
||||
_worker = worker;
|
||||
_authHelper = authHelper;
|
||||
_cameraAccountApplication = cameraAccountApplication;
|
||||
_webHostEnvironment = webHostEnvironment;
|
||||
_androidApkVersionApplication = androidApkVersionApplication;
|
||||
_clientRegistrationApplication = clientRegistrationApplication;
|
||||
_yearlySalaryRepository = yearlySalaryRepository;
|
||||
_computeOptions = computeOptions;
|
||||
_fileApplication = fileApplication;
|
||||
public IndexModel(IAuthHelper authHelper, IAccountApplication accountApplication)
|
||||
{
|
||||
_authHelper = authHelper;
|
||||
_accountApplication = accountApplication;
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnGet()
|
||||
public IActionResult OnGet()
|
||||
{
|
||||
//اصلاحات محاسبه عیدی در فیش حقوقی
|
||||
// _computeOptions.GetAllByWorkshopId(170);
|
||||
//اصلاحات محاصبه پایه سنوات در فیش حقوقی
|
||||
//_yearlySalaryRepository.TestDayliFeeCompute();
|
||||
bool ex = false;
|
||||
//while (!ex)
|
||||
//{
|
||||
// Console.WriteLine("enter National code ... ");
|
||||
// var nationalCode = Console.ReadLine();
|
||||
// Console.WriteLine("enter DateOfBirth ... ");
|
||||
// var dateOfBirth = Console.ReadLine();
|
||||
// Console.WriteLine("enter phoneNumber ... ");
|
||||
// var phone = Console.ReadLine();
|
||||
// var res = await _clientRegistrationApplication.CreateContractingPartyTemp(nationalCode, dateOfBirth,
|
||||
// phone);
|
||||
// if (res.IsSuccedded)
|
||||
// {
|
||||
// var updateAddress =await
|
||||
// _clientRegistrationApplication.UpdateAddress(res.Data.Id, "gilan", "rasht", "hajiabad");
|
||||
// if (updateAddress.IsSuccedded)
|
||||
// {
|
||||
// var workshopSelected = _clientRegistrationApplication.GetWorkshopTemp(res.Data.Id).GetAwaiter().GetResult();
|
||||
// if (workshopSelected.Count > 0)
|
||||
// {
|
||||
// var result = await
|
||||
// _clientRegistrationApplication.GetTotalPaymentAndWorkshopList(res.Data.Id, "12",
|
||||
// "OneTime");
|
||||
// Console.WriteLine("sumOfWorkshopPayment : " + result.SumOfWorkshopsPaymentDouble);
|
||||
// Console.WriteLine("TotalPaymentDouble : " + result.TotalPaymentDouble);
|
||||
// var createInstitutionContract = await
|
||||
// _clientRegistrationApplication.CreateOrUpdateInstitutionContractTemp(res.Data.Id, null,
|
||||
// null, result.TotalPaymentDouble, 0);
|
||||
// if (createInstitutionContract.IsSuccedded)
|
||||
// {
|
||||
// var sendVerfyCode =await _clientRegistrationApplication.ReceivedCodeFromServer(res.Data.Id);
|
||||
// if (sendVerfyCode.IsSuccedded)
|
||||
// {
|
||||
// Console.WriteLine("enter the code ... ");
|
||||
// var codeReceived = Console.ReadLine();
|
||||
if(_authHelper.IsAuthenticated())
|
||||
return Redirect("/login");
|
||||
return Page();
|
||||
}
|
||||
|
||||
// var completeSms = await
|
||||
// _clientRegistrationApplication.CheckVerifyCodeIsTrue(res.Data.Id, codeReceived);
|
||||
// if (completeSms.IsSuccedded)
|
||||
// {
|
||||
// var payOffCompleted =
|
||||
// await _clientRegistrationApplication.PayOffCompleted(res.Data.Id);
|
||||
// if (payOffCompleted.IsSuccedded)
|
||||
// {
|
||||
// Console.WriteLine("finaly completed");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Console.WriteLine(payOffCompleted.Message);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// var workshops = new List<WorkshopTempViewModel>();
|
||||
// workshops.Add(new WorkshopTempViewModel
|
||||
// {
|
||||
// ContractAndCheckout = true,
|
||||
// ContractingPartyTempId = res.Data.Id,
|
||||
// CountPerson = 10,
|
||||
// CustomizeCheckout = true,
|
||||
// Insurance = true,
|
||||
// RollCall = true,
|
||||
// WorkshopName = "dadmehr",
|
||||
|
||||
// });
|
||||
// workshops.Add(new WorkshopTempViewModel
|
||||
// {
|
||||
// ContractAndCheckout = true,
|
||||
// ContractingPartyTempId = res.Data.Id,
|
||||
// CountPerson = 20,
|
||||
// CustomizeCheckout = true,
|
||||
// Insurance = true,
|
||||
// RollCall = true,
|
||||
// WorkshopName = "kababMahdi",
|
||||
|
||||
// });
|
||||
// var creteWorkshops = _clientRegistrationApplication.CreateOrUpdateWorkshopTemp(workshops)
|
||||
// .GetAwaiter().GetResult();
|
||||
|
||||
// if (creteWorkshops.IsSuccedded)
|
||||
// {
|
||||
// var result = _clientRegistrationApplication.GetTotalPaymentAndWorkshopList(res.Data.Id).GetAwaiter().GetResult();
|
||||
// Console.WriteLine("sumOfWorkshopPayment : " + result.SumOfWorkshopsPaymentDouble);
|
||||
// Console.WriteLine("TotalPaymentDouble : " + result.TotalPaymentDouble);
|
||||
|
||||
// var createInstitutionContract = await
|
||||
// _clientRegistrationApplication.CreateOrUpdateInstitutionContractTemp(res.Data.Id, null,
|
||||
// null, result.TotalPaymentDouble, 0);
|
||||
// if (createInstitutionContract.IsSuccedded)
|
||||
// {
|
||||
// var sendVerfyCode = await _clientRegistrationApplication.ReceivedCodeFromServer(res.Data.Id);
|
||||
// if (sendVerfyCode.IsSuccedded)
|
||||
// {
|
||||
// Console.WriteLine("enter the code ... ");
|
||||
// var codeReceived = Console.ReadLine();
|
||||
|
||||
// var completeSms = await
|
||||
// _clientRegistrationApplication.CheckVerifyCodeIsTrue(res.Data.Id, codeReceived);
|
||||
// if (completeSms.IsSuccedded)
|
||||
// {
|
||||
// var payOffCompleted =
|
||||
// await _clientRegistrationApplication.PayOffCompleted(res.Data.Id);
|
||||
// if (payOffCompleted.IsSuccedded)
|
||||
// {
|
||||
// Console.WriteLine("finaly completed");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// Console.WriteLine(payOffCompleted.Message);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// }
|
||||
// }
|
||||
// Console.WriteLine("do you want to exit ... ");
|
||||
// var exitCheck = Console.ReadLine();
|
||||
// if (exitCheck == "y")
|
||||
// ex = true;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// while (!ex)
|
||||
// {
|
||||
// var onGet = _institutionPlanApplication.GetByFirst();
|
||||
// Console.WriteLine("enter ContractAndCheckoutInPersonPercent ... " + onGet.ContractAndCheckoutInPersonPercent);
|
||||
// var ContractAndCheckoutInPersonPercent = Console.ReadLine();
|
||||
// Console.WriteLine("enter ContractAndCheckoutPercent ... " + onGet.ContractAndCheckoutPercent);
|
||||
// var ContractAndCheckoutPercent = Console.ReadLine();
|
||||
|
||||
// Console.WriteLine("enter InsurancePercent ... " + onGet.InsurancePercent);
|
||||
// var InsurancePercent = Console.ReadLine();
|
||||
// Console.WriteLine("enter InsuranceInPersonPercent ... " + onGet.InsuranceInPersonPercent);
|
||||
// var InsuranceInPersonPercent = Console.ReadLine();
|
||||
|
||||
// Console.WriteLine("enter CustomizeCheckoutPercent ... " + onGet.CustomizeCheckoutPercent);
|
||||
// var CustomizeCheckoutPercent = Console.ReadLine();
|
||||
// Console.WriteLine("enter RollCallPercent ... " + onGet.RollCallPercent);
|
||||
// var RollCallPercent = Console.ReadLine();
|
||||
// //var res = _institutionPlanApplication.GetInstitutionPlanList(Convert.ToInt32(pageIndex),
|
||||
// // Convert.ToInt32(countPerson));
|
||||
|
||||
// var res = _institutionPlanApplication.CreateInstitutionPlanPercentage(new CreateInstitutionPlanPercentage()
|
||||
// {
|
||||
// ContractAndCheckoutInPersonPercentStr = ContractAndCheckoutInPersonPercent,
|
||||
// ContractAndCheckoutPercentStr = ContractAndCheckoutPercent,
|
||||
// InsurancePercentStr = InsurancePercent,
|
||||
// InsuranceInPersonPercentStr = InsuranceInPersonPercent,
|
||||
// CustomizeCheckoutPercentStr = CustomizeCheckoutPercent,
|
||||
// RollCallPercentStr = RollCallPercent
|
||||
// });
|
||||
|
||||
// Console.WriteLine("do you want to exit ... ");
|
||||
// var exitCheck = Console.ReadLine();
|
||||
// if (exitCheck == "y")
|
||||
// ex = true;
|
||||
//}
|
||||
// _reportRepository.GetAllActiveWorkshopsNew("1403", "12");
|
||||
|
||||
//var test = _uidService.GetPersonalInfo("2669318622", "1363/02/25");
|
||||
HasApkToDownload = _androidApkVersionApplication.HasAndroidApkToDownload();
|
||||
if (User.Identity is { IsAuthenticated: true })
|
||||
{
|
||||
if (User.FindFirstValue("IsCamera") == "true")
|
||||
{
|
||||
return Redirect("/Camera");
|
||||
}
|
||||
else if ((User.FindFirstValue("ClientAriaPermission") == "true") && (User.FindFirstValue("AdminAreaPermission") == "false"))
|
||||
{
|
||||
return Redirect("/Client");
|
||||
}
|
||||
else
|
||||
{
|
||||
return Redirect("/Admin");
|
||||
}
|
||||
}
|
||||
_authHelper.SignOut();
|
||||
return Page();
|
||||
}
|
||||
|
||||
|
||||
public IActionResult OnPostLogin(Login command)
|
||||
{
|
||||
|
||||
var result = _accountApplication.Login(command);
|
||||
if (result.IsSuccedded)
|
||||
return RedirectToPage("/Admin");
|
||||
|
||||
|
||||
ModelState.AddModelError("Username", "اطلاعات وارد شده اشتباه است");
|
||||
TempData["h"] = "n";
|
||||
Mess = result.Message;
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
public IActionResult OnPostEnter(Login command)
|
||||
public IActionResult OnGetLogout()
|
||||
{
|
||||
|
||||
bool captchaResult = true;
|
||||
//if (!_webHostEnvironment.IsDevelopment())
|
||||
// captchaResult = _googleRecaptcha.IsSatisfy(CaptchaResponse).Result;
|
||||
|
||||
|
||||
if (captchaResult)
|
||||
{
|
||||
var result = _accountApplication.Login(command);
|
||||
if (result.IsSuccedded)
|
||||
{
|
||||
switch (result.SendId)
|
||||
{
|
||||
case 1:
|
||||
return Redirect("/Admin");
|
||||
break;
|
||||
case 2:
|
||||
return Redirect("/Client");
|
||||
break;
|
||||
case 3:
|
||||
return Redirect("/Camera");
|
||||
//return
|
||||
// var verfiyResult = _accountApplication.GetByVerifyCode(code);
|
||||
break;
|
||||
case 0:
|
||||
result.Message = "امکان ورود با این حساب کاربری وجود ندارد";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Mess = result.Message;
|
||||
}
|
||||
else
|
||||
{
|
||||
Mess = "دستگاه شما ربات تشخیص داده شد";
|
||||
}
|
||||
|
||||
|
||||
|
||||
//ModelState.AddModelError("Username", "اطلاعات وارد شده اشتباه است");
|
||||
|
||||
return Page();
|
||||
}
|
||||
|
||||
public async Task<JsonResult> OnPostCheckCaptcha(string response)
|
||||
{
|
||||
var result = await _googleRecaptcha.IsSatisfy(response);
|
||||
|
||||
return new JsonResult(new
|
||||
{
|
||||
isNotRobot = result,
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
public IActionResult OnPostRegisterClient(string name, string user, string pass, string phone, string nationalcode)
|
||||
{
|
||||
var command = new RegisterAccount()
|
||||
{
|
||||
Fullname = name,
|
||||
Username = user,
|
||||
Password = pass,
|
||||
Mobile = phone,
|
||||
NationalCode = nationalcode,
|
||||
};
|
||||
var result = _accountApplication.RegisterClient(command);
|
||||
return new JsonResult(new
|
||||
{
|
||||
isSucceded = result.IsSuccedded,
|
||||
message = result.Message
|
||||
});
|
||||
}
|
||||
public IActionResult OnGetLogout()
|
||||
{
|
||||
_accountApplication.Logout();
|
||||
return RedirectToPage("/Index");
|
||||
}
|
||||
|
||||
|
||||
public async Task<IActionResult> OnPostCheckPhoneValid(string phone)
|
||||
{
|
||||
var result = _accountApplication.Search(new AccountSearchModel() { Mobile = phone }).FirstOrDefault();
|
||||
if (result == null)
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = false,
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
SendSms(phone);
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = true,
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void SendSms(string phone)
|
||||
{
|
||||
|
||||
var result = _accountApplication.Search(new AccountSearchModel() { Mobile = phone }).FirstOrDefault();
|
||||
if (result != null)
|
||||
{
|
||||
_accountApplication.SetVerifyCode(phone, result.Id);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public IActionResult OnPostWithMobile(string code, string phone)
|
||||
{
|
||||
//bool captchaResult = true;
|
||||
//if (!_webHostEnvironment.IsDevelopment())
|
||||
// captchaResult = _googleRecaptcha.IsSatisfy(CaptchaResponse).Result;
|
||||
//if (captchaResult)
|
||||
//{
|
||||
var verfiyResult = _accountApplication.GetByVerifyCode(code, phone);
|
||||
if (verfiyResult != null)
|
||||
{
|
||||
|
||||
var result = _accountApplication.LoginWithMobile(verfiyResult.Id);
|
||||
if (result.IsSuccedded && result.SendId == 1)
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = true,
|
||||
url = "/Admin",
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
if (result.IsSuccedded && result.SendId == 2)
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = true,
|
||||
url = "/Client",
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// Mess = "دستگاه شما ربات تشخیص داده شد";
|
||||
//}
|
||||
|
||||
|
||||
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = false,
|
||||
});
|
||||
|
||||
}
|
||||
public IActionResult OnPostVerify(string code, string phone)
|
||||
{
|
||||
var result = _accountApplication.GetByVerifyCode(code, phone);
|
||||
if (result != null)
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = true,
|
||||
user = result.Username,
|
||||
verfyId = result.Id
|
||||
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = false,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public IActionResult OnPostChangePass(long id, string username, string newpass)
|
||||
{
|
||||
var result = _accountApplication.GetByUserNameAndId(id, username);
|
||||
if (result != null)
|
||||
{
|
||||
var command = new ChangePassword()
|
||||
{
|
||||
Id = id,
|
||||
Password = newpass,
|
||||
RePassword = newpass
|
||||
};
|
||||
var finalResult = _accountApplication.ChangePassword(command);
|
||||
if (finalResult.IsSuccedded)
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = true,
|
||||
changed = true
|
||||
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = true,
|
||||
changed = false
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return new JsonResult(new
|
||||
{
|
||||
exist = false,
|
||||
changed = false
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class RecaptchaResponse
|
||||
{
|
||||
[JsonProperty("success")]
|
||||
public bool Success { get; set; }
|
||||
|
||||
[JsonProperty("challenge_ts")]
|
||||
public DateTimeOffset ChallengeTs { get; set; }
|
||||
|
||||
[JsonProperty("hostname")]
|
||||
public string HostName { get; set; }
|
||||
|
||||
}
|
||||
|
||||
_accountApplication.Logout();
|
||||
return RedirectToPage("/Index");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,7 @@ namespace ServiceHost.Pages.register
|
||||
|
||||
public void OnGet()
|
||||
{
|
||||
Redirect("/");
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostCreateContractingPartyTemp(string nationalCode, string birthDate, string mobile)
|
||||
|
||||
@@ -83,19 +83,28 @@
|
||||
}
|
||||
|
||||
.authBgLog {
|
||||
background-color: #F1F1F1;
|
||||
background-color: #38bebe;
|
||||
border: 1px solid #F1F1F1;
|
||||
color: #FFFFFF;
|
||||
width: 100%;
|
||||
border-radius: 9px;
|
||||
padding: 7px 9px;
|
||||
text-align: center;
|
||||
transition: background-color 0.3s ease-in-out,color 0.3s ease-in;
|
||||
}
|
||||
.authBgLog:hover {
|
||||
background-color: #ffffff;
|
||||
color: #38bebe;
|
||||
border: 1px solid #38bebe;
|
||||
}
|
||||
|
||||
.dark\:authBgLog:is(.dark *) {
|
||||
background-color: #212330;
|
||||
width: 100%;
|
||||
border-radius: 9px;
|
||||
border: 1px solid #38bebe;
|
||||
padding: 7px 9px;
|
||||
color: #ffffff;
|
||||
color: #38bebe;
|
||||
}
|
||||
|
||||
.lineAuthSeparate {
|
||||
@@ -187,6 +196,28 @@
|
||||
<path d="M5.63608 5.63657L7.05029 7.05078" stroke="white" stroke-width="2" stroke-linecap="round" />
|
||||
</svg>
|
||||
</button>
|
||||
<div class="flex lg:hidden items-center gap-3">
|
||||
@if (User.Identity.IsAuthenticated)
|
||||
{
|
||||
<a href="@redirectDashboard" class="py-[0.54rem] w-[5.1rem] px-1 text-[0.8rem] font-[500] text-center bg-white border-2 border-[#2DBCBC] text-[#138F8F] rounded-md duration-500 ease-in-out hover:bg-[#2DBCBC] hover:text-white">
|
||||
@* <span>@currentAccount.Fullname</span> *@
|
||||
<span>پیشخان</span>
|
||||
</a>
|
||||
<a asp-page="/Index" asp-page-handler="Logout" class="py-[0.54rem] w-[5.1rem] px-1 text-[0.8rem] font-[500] text-center bg-white border-2 border-[#2DBCBC] text-[#138F8F] rounded-md duration-500 ease-in-out hover:bg-[#2DBCBC] hover:text-white">
|
||||
<span>خروج</span>
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a asp-page="/login/Index" class="py-[0.54rem] w-[5.1rem] px-1 text-[0.8rem] font-[500] text-center bg-white border-2 border-[#2DBCBC] text-[#138F8F] rounded-md duration-500 ease-in-out hover:bg-[#2DBCBC] hover:text-white">
|
||||
<span>ورود</span>
|
||||
</a>
|
||||
@* <a $1$asp-page="/register/Index"#1# class="py-[0.54rem] w-[5.1rem] px-1 text-[0.8rem] font-[500] text-center bg-white border-2 border-[#2DBCBC] text-[#138F8F] rounded-md duration-500 ease-in-out hover:bg-[#2DBCBC] hover:text-white disable"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -219,9 +250,10 @@
|
||||
<a asp-page="/login/Index" class="py-[0.54rem] w-[5.1rem] px-1 text-[0.8rem] font-[500] text-center bg-white border-2 border-[#2DBCBC] text-[#138F8F] rounded-md duration-500 ease-in-out hover:bg-[#2DBCBC] hover:text-white">
|
||||
<span>ورود</span>
|
||||
</a>
|
||||
<a asp-page="/register/Index" class="py-[0.54rem] w-[5.1rem] px-1 text-[0.8rem] font-[500] text-center bg-white border-2 border-[#2DBCBC] text-[#138F8F] rounded-md duration-500 ease-in-out hover:bg-[#2DBCBC] hover:text-white">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
@* <a $1$asp-page="/register/Index"#1# class="py-[0.54rem] w-[5.1rem] px-1 text-[0.8rem] font-[500] text-center bg-white border-2 border-[#2DBCBC] text-[#138F8F] rounded-md duration-500 ease-in-out hover:bg-[#2DBCBC] hover:text-white disable"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -332,16 +364,17 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="authBgLog mb-2 dark:authBgLog">
|
||||
<button onclick="window.location.href = './login'" class="authBgLog mb-2 dark:authBgLog">
|
||||
<a asp-page="/login/Index" class="px-1 text-[0.8rem] font-[500] text-center rounded-md duration-500 ease-in-out">
|
||||
<span>ورود</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="authBgLog dark:authBgLog">
|
||||
<a asp-page="/register/Index" class="px-1 text-[0.8rem] font-[500] text-center rounded-md duration-500 ease-in-out">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
</div>
|
||||
</button>
|
||||
@* <div class="authBgLog dark:authBgLog"> *@
|
||||
@* <a $1$asp-page="/register/Index"#1# class="px-1 text-[0.8rem] font-[500] text-center rounded-md duration-500 ease-in-out"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
@* </div> *@
|
||||
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<button class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out">
|
||||
<span>تماس با فروش</span>
|
||||
</button>
|
||||
<a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
@* <a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden md:flex justify-end gap-6 w-6/12 opacity-100 z-1">
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<button class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out">
|
||||
<span>تماس با فروش</span>
|
||||
</button>
|
||||
<a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
@* <a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden md:flex justify-end gap-6 w-6/12 opacity-100 z-1">
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<button class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out">
|
||||
<span>تماس با فروش</span>
|
||||
</button>
|
||||
<a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
@* <a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden md:flex justify-end gap-6 w-6/12 opacity-100 z-1">
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<button class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out">
|
||||
<span>تماس با فروش</span>
|
||||
</button>
|
||||
<a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
@* <a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden md:flex justify-end gap-6 w-6/12 opacity-100 z-1">
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<button class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out">
|
||||
<span>تماس با فروش</span>
|
||||
</button>
|
||||
<a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
@* <a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden md:flex justify-end gap-6 w-6/12 opacity-100 z-1">
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<button class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out">
|
||||
<span>تماس با فروش</span>
|
||||
</button>
|
||||
<a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer">
|
||||
<span>ثبت نام</span>
|
||||
</a>
|
||||
@* <a asp-page="/register/Index" class="py-[0.54rem] w-full md:w-[8rem] px-3 text-[0.8rem] font-[500] text-center bg-white hover:bg-[#2DBCBC] border-2 border-[#2DBCBC] text-[#138F8F] hover:text-white rounded-md duration-500 ease-in-out cursor-pointer"> *@
|
||||
@* <span>ثبت نام</span> *@
|
||||
@* </a> *@
|
||||
</div>
|
||||
</div>
|
||||
<div class="hidden md:flex justify-end gap-6 w-6/12 opacity-100 z-1">
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Bogus" Version="35.6.3" />
|
||||
<PackageReference Include="IPE.SmsIR" Version="1.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter" Version="8.0.4" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.4" />
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user