350 lines
13 KiB
C#
350 lines
13 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Diagnostics;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
using System.Threading.Tasks;
|
||
using _0_Framework.Application;
|
||
using _0_Framework.Application.Enums;
|
||
using _0_Framework.Application.Sms;
|
||
using CompanyManagment.App.Contracts.Checkout;
|
||
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
|
||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||
using CompanyManagment.App.Contracts.Workshop;
|
||
using CompanyManagment.App.Contracts.WorkshopPlan;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
|
||
namespace CompanyManagment.App.Contracts.InstitutionContract;
|
||
|
||
/// <summary>
|
||
/// رابط اپلیکیشن قراردادهای مؤسسه
|
||
/// مدیریت عملیات مربوط به قراردادهای مالی مؤسسات
|
||
/// </summary>
|
||
public interface IInstitutionContractApplication
|
||
{
|
||
/// <summary>
|
||
/// ایجاد قرارداد جدید
|
||
/// </summary>
|
||
/// <param name="command">اطلاعات قرارداد جدید</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult Create(CreateInstitutionContract command);
|
||
|
||
/// <summary>
|
||
/// تمدید قرارداد موجود
|
||
/// </summary>
|
||
/// <param name="command">اطلاعات قرارداد برای تمدید</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult Extension(CreateInstitutionContract command);
|
||
|
||
/// <summary>
|
||
/// ویرایش قرارداد موجود
|
||
/// </summary>
|
||
/// <param name="command">اطلاعات جدید قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult Edit(EditInstitutionContract command);
|
||
|
||
/// <summary>
|
||
/// دریافت جزئیات قرارداد برای ویرایش
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>اطلاعات قرارداد</returns>
|
||
EditInstitutionContract GetDetails(long id);
|
||
|
||
/// <summary>
|
||
/// جستجو در قراردادها
|
||
/// </summary>
|
||
/// <param name="searchModel">مدل جستجو</param>
|
||
/// <returns>لیست قراردادها</returns>
|
||
List<InstitutionContractViewModel> Search(InstitutionContractSearchModel searchModel);
|
||
|
||
/// <summary>
|
||
/// جستجوی جدید در قراردادها
|
||
/// </summary>
|
||
/// <param name="searchModel">مدل جستجو</param>
|
||
/// <returns>لیست قراردادها</returns>
|
||
List<InstitutionContractViewModel> NewSearch(InstitutionContractSearchModel searchModel);
|
||
|
||
/// <summary>
|
||
/// دریافت اطلاعات قرارداد های مالی فعال
|
||
///دارای کارگاه
|
||
/// جهت ست کردن سرویس ها از طریق اکسل
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
List<InstitutionContractViewModel> GetInstitutionContractToSetServicesExcelImport();
|
||
|
||
/// <summary>
|
||
/// چاپ مجموعه قراردادها
|
||
/// </summary>
|
||
/// <param name="id">لیست شناسه قراردادها</param>
|
||
/// <returns>لیست قراردادها برای چاپ</returns>
|
||
List<InstitutionContractViewModel> PrintAll(List<long> id);
|
||
|
||
/// <summary>
|
||
/// چاپ یک قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>اطلاعات قرارداد برای چاپ</returns>
|
||
[Obsolete("استفاده نشود، از متد غیرهمزمان استفاده شود")]
|
||
InstitutionContractViewModel PrintOne(long id);
|
||
|
||
/// <summary>
|
||
/// فعال کردن قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult Active(long id);
|
||
|
||
/// <summary>
|
||
/// غیرفعال کردن قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult DeActive(long id);
|
||
|
||
/// <summary>
|
||
/// غیرفعال کردن قرارداد (حالت آبی)
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult DeActiveBlue(long id);
|
||
|
||
/// <summary>
|
||
/// غیرفعال کردن تمام اتصالات قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult DeActiveAllConnections(long id);
|
||
|
||
/// <summary>
|
||
/// فعال کردن مجدد تمام اتصالات قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult ReActiveAllConnections(long id);
|
||
|
||
/// <summary>
|
||
/// فعال کردن مجدد تمام قراردادها بعد از ایجاد قرارداد جدید
|
||
/// </summary>
|
||
/// <param name="contractingPartyId">شناسه طرف قرارداد</param>
|
||
void ReActiveAllAfterCreateNew(long contractingPartyId);
|
||
|
||
/// <summary>
|
||
/// حذف قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
void RemoveContract(long id);
|
||
|
||
/// <summary>
|
||
/// امضای قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult Sign(long id);
|
||
|
||
/// <summary>
|
||
/// لغو امضای قرارداد
|
||
/// </summary>
|
||
/// <param name="id">شناسه قرارداد</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
OperationResult UnSign(long id);
|
||
|
||
/// <summary>
|
||
/// ایجاد حساب کاربری برای طرف قرارداد
|
||
/// </summary>
|
||
/// <param name="contractingPartyid">شناسه طرف قرارداد</param>
|
||
/// <param name="accountId">شناسه حساب کاربری</param>
|
||
void CreateContractingPartyAccount(long contractingPartyid, long accountId);
|
||
|
||
/// <summary>
|
||
/// محاسبه مبلغ قرارداد بر اساس تعداد افراد
|
||
/// </summary>
|
||
/// <param name="countPerson">تعداد افراد</param>
|
||
/// <returns>مبلغ قرارداد</returns>
|
||
double GetcontractAmount(int countPerson);
|
||
|
||
#region Api
|
||
|
||
/// <summary>
|
||
/// لیست قرارداد های مالی
|
||
/// </summary>
|
||
/// <param name="searchModel"></param>
|
||
/// <returns></returns>
|
||
Task<PagedResult<GetInstitutionContractListItemsViewModel>> GetList
|
||
(InstitutionContractListSearchModel searchModel);
|
||
|
||
/// <summary>
|
||
/// وضعیت لیست کلی
|
||
/// </summary>
|
||
/// <param name="searchModel"></param>
|
||
/// <returns></returns>
|
||
Task<GetInstitutionContractListStatsViewModel> GetListStats(InstitutionContractListSearchModel searchModel);
|
||
|
||
/// <summary>
|
||
/// ایجاد
|
||
/// </summary>
|
||
/// <param name="command"></param>
|
||
/// <returns></returns>
|
||
Task<OperationResult> CreateAsync(CreateInstitutionContractRequest command);
|
||
|
||
/// <summary>
|
||
/// ویرایش
|
||
/// </summary>
|
||
/// <param name="command"></param>
|
||
/// <returns></returns>
|
||
Task<OperationResult> EditAsync(EditInstitutionContractRequest command);
|
||
|
||
|
||
/// <summary>
|
||
/// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
|
||
/// جهت نمایش در کارپوشه
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
Task<List<RegistrationWorkflowMainListViewModel>> RegistrationWorkflowMainList();
|
||
|
||
/// <summary>
|
||
/// دریافت آیتم های کارپوشه ثبت نام
|
||
/// </summary>
|
||
/// <param name="institutionContractId"></param>
|
||
/// <returns></returns>
|
||
Task<List<RegistrationWorkflowItemsViewModel>> RegistrationWorkflowItems(long institutionContractId);
|
||
|
||
#endregion
|
||
|
||
Task<GetInstitutionVerificationDetailsViewModel> GetVerificationDetails(Guid id);
|
||
Task<OperationResult<OtpResultViewModel>> SendVerifyOtp(Guid id);
|
||
Task<OperationResult<string>> VerifyOtpAndMakeGateway(Guid publicId, string code, string callbackUrl);
|
||
Task<InstitutionContractWorkshopDetailViewModel> GetWorkshopInitialDetails(long workshopDetailsId);
|
||
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
|
||
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
||
|
||
#region Creation
|
||
|
||
/// <summary>
|
||
/// تب ایجاد قرارداد مؤسسه - احراز هویت
|
||
/// </summary>
|
||
/// <param name="request"></param>
|
||
/// <returns></returns>
|
||
Task<InstitutionContractCreationInquiryResult> CreationInquiry(InstitutionContractCreationInquiryRequest request);
|
||
|
||
/// <summary>
|
||
/// تب ایجاد قرارداد مؤسسه -مشخصات طرف قرارداد و انتخاب کارگاه ها
|
||
/// </summary>
|
||
/// <param name="request"></param>
|
||
/// <returns></returns>
|
||
Task<InstitutionContractCreationWorkshopsResponse> GetCreationWorkshops(
|
||
InstitutionContractCreationWorkshopsRequest request);
|
||
/// <summary>
|
||
/// تب ایجاد قرارداد مؤسسه - مالی
|
||
/// </summary>
|
||
/// <param name="request"></param>
|
||
/// <returns></returns>
|
||
Task<InstitutionContractCreationPlanResponse> GetCreationInstitutionPlan(InstitutionContractCreationPlanRequest request);
|
||
|
||
#endregion
|
||
|
||
#region Extension
|
||
|
||
Task<InstitutionContractExtensionInquiryResult> GetExtensionInquiry(long previousContractId);
|
||
|
||
Task<InstitutionContractExtensionWorkshopsResponse> GetExtensionWorkshops(
|
||
InstitutionContractExtensionWorkshopsRequest request);
|
||
|
||
Task<InstitutionContractExtensionPlanResponse> GetExtensionInstitutionPlan(
|
||
InstitutionContractExtensionPlanRequest request);
|
||
|
||
Task<InstitutionContractExtensionPaymentResponse> GetExtensionPaymentMethod(
|
||
InstitutionContractExtensionPaymentRequest request);
|
||
|
||
Task<InstitutionContractDiscountResponse> SetDiscountForExtension(
|
||
InstitutionContractSetDiscountForExtensionRequest request);
|
||
|
||
Task<InstitutionContractDiscountResponse> ResetDiscountForExtension(
|
||
InstitutionContractResetDiscountForExtensionRequest request);
|
||
|
||
|
||
Task<OperationResult> ExtensionComplete(InstitutionContractExtensionCompleteRequest request);
|
||
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search, string selected);
|
||
|
||
#endregion
|
||
|
||
#region Upgrade (Amendment)
|
||
|
||
Task<InstitutionContractAmendmentWorkshopsResponse> GetAmendmentWorkshops(long institutionContractId);
|
||
|
||
Task<InsertAmendmentTempWorkshopResponse> InsertAmendmentTempWorkshops(
|
||
InstitutionContractAmendmentTempWorkshopViewModel request);
|
||
|
||
Task RemoveAmendmentWorkshops(Guid workshopTempId);
|
||
|
||
Task<InsitutionContractAmendmentPaymentResponse> GetAmendmentPaymentDetails(
|
||
InsitutionContractAmendmentPaymentRequest request);
|
||
|
||
#endregion
|
||
|
||
Task<OperationResult> ResendVerifyLink(long institutionContractId);
|
||
|
||
/// <summary>
|
||
/// دیتای پرینت قرارداد مالی
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
Task<InstitutionContractPrintViewModel> PrintOneAsync(long id);
|
||
|
||
Task<OperationResult> SetPendingWorkflow(long entityId, InstitutionContractSigningType signingType);
|
||
Task<long> GetIdByInstallmentId(long installmentId);
|
||
|
||
/// <summary>
|
||
/// تایید قرارداد مالی به صورت دستی
|
||
/// </summary>
|
||
/// <param name="institutionContractId"></param>
|
||
/// <returns></returns>
|
||
Task<OperationResult> VerifyInstitutionContractManually(long institutionContractId);
|
||
|
||
Task<InstitutionContractCreationPaymentResponse> GetCreationPaymentMethod(InstitutionContractCreationPaymentRequest request);
|
||
Task<InstitutionContractDiscountResponse> SetDiscountForCreation(InstitutionContractSetDiscountForCreationRequest request);
|
||
Task<InstitutionContractDiscountResponse> ResetDiscountForCreation(InstitutionContractResetDiscountForExtensionRequest request);
|
||
Task<OperationResult> CreationComplete(InstitutionContractExtensionCompleteRequest request);
|
||
|
||
/// <summary>
|
||
/// تعیین فلگ ارسال قرارداد در MongoDB
|
||
/// اگر فلگ وجود نداشتند ایجاد میکند
|
||
/// </summary>
|
||
/// <param name="request">درخواست تعیین فلگ</param>
|
||
/// <returns>نتیجه عملیات</returns>
|
||
Task<OperationResult> SetContractSendFlag(SetInstitutionContractSendFlagRequest request);
|
||
}
|
||
|
||
public class CreationSetContractingPartyResponse
|
||
{
|
||
public long RepresentativeId { get; set; }
|
||
}
|
||
|
||
public class InstitutionContractCreationWorkshopsResponse
|
||
{
|
||
public List<WorkshopTempViewModel> WorkshopTemps { get; set; }
|
||
public string TotalAmount { get; set; }
|
||
public Guid TempId { get; set; }
|
||
}
|
||
|
||
public class InstitutionContractCreationWorkshopsRequest
|
||
{
|
||
public Guid TempId { get; set; }
|
||
public string City { get; set; }
|
||
public string Province { get; set; }
|
||
public string Address { get; set; }
|
||
public List<EditContactInfo> ContactInfos { get; set; }
|
||
|
||
/// <summary>
|
||
/// اطلاعات شخص حقیقی
|
||
/// </summary>
|
||
public CreateInstitutionContractRealPartyRequest RealParty { get; set; }
|
||
|
||
/// <summary>
|
||
/// اطلاعات شخص حقوقی
|
||
/// </summary>
|
||
public CreateInstitutionContractLegalPartyRequest LegalParty { get; set; }
|
||
|
||
public LegalType LegalType { get; set; }
|
||
|
||
public long RepresentativeId { get; set; }
|
||
} |