1128 lines
50 KiB
C#
1128 lines
50 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Threading.Tasks;
|
||
using System.Transactions;
|
||
using _0_Framework.Application;
|
||
using AccountManagement.Application.Contracts.Account;
|
||
using AccountManagement.Domain.AccountAgg;
|
||
using Company.Domain.ContarctingPartyAgg;
|
||
using Company.Domain.InstitutionContractAgg;
|
||
using Company.Domain.LeftWorkAgg;
|
||
using Company.Domain.LeftWorkInsuranceAgg;
|
||
using Company.Domain.WorkshopAgg;
|
||
using CompanyManagment.App.Contracts.Employee;
|
||
using CompanyManagment.App.Contracts.EmployeeChildren;
|
||
using CompanyManagment.App.Contracts.LeftWork;
|
||
using CompanyManagment.App.Contracts.RollCallService;
|
||
using CompanyManagment.App.Contracts.Workshop;
|
||
using CompanyManagment.App.Contracts.Workshop.DTOs;
|
||
using CompanyManagment.App.Contracts.WorkshopPlan;
|
||
using CompanyManagment.EFCore.Migrations;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Microsoft.EntityFrameworkCore;
|
||
using Microsoft.Extensions.Configuration.UserSecrets;
|
||
using Microsoft.Identity.Client;
|
||
using Workshop = Company.Domain.WorkshopAgg.Workshop;
|
||
|
||
namespace CompanyManagment.Application;
|
||
|
||
public class WorkshopAppliction : IWorkshopApplication
|
||
{
|
||
private readonly IWorkshopRepository _workshopRepository;
|
||
private readonly ILeftWorkRepository _leftWorkRepository;
|
||
private readonly ILeftWorkInsuranceRepository _leftWorkInsuranceRepository;
|
||
private readonly IWorkshopPlanApplication _workshopPlanApplication;
|
||
private readonly IEmployeeApplication _employeeApplication;
|
||
private readonly IEmployeeChildrenApplication _employeeChildrenApplication;
|
||
private readonly IInstitutionContractRepository _institutionContractRepository;
|
||
private readonly IPersonalContractingPartyRepository _personalContractingPartyRepository;
|
||
private readonly IRollCallServiceApplication _rollCallServiceApplication;
|
||
private readonly IPasswordHasher _passwordHasher;
|
||
|
||
public WorkshopAppliction(IWorkshopRepository workshopRepository, ILeftWorkRepository leftWorkRepository,
|
||
ILeftWorkInsuranceRepository leftWorkInsuranceRepository, IWorkshopPlanApplication workshopPlanApplication,
|
||
IEmployeeApplication employeeApplication, IEmployeeChildrenApplication employeeChildrenApplication,
|
||
IInstitutionContractRepository institutionContractRepository,
|
||
IPersonalContractingPartyRepository personalContractingPartyRepository,
|
||
IRollCallServiceApplication rollCallServiceApplication, IPasswordHasher passwordHasher)
|
||
{
|
||
_workshopRepository = workshopRepository;
|
||
_leftWorkRepository = leftWorkRepository;
|
||
_leftWorkInsuranceRepository = leftWorkInsuranceRepository;
|
||
_workshopPlanApplication = workshopPlanApplication;
|
||
_employeeApplication = employeeApplication;
|
||
_employeeChildrenApplication = employeeChildrenApplication;
|
||
_institutionContractRepository = institutionContractRepository;
|
||
_personalContractingPartyRepository = personalContractingPartyRepository;
|
||
_rollCallServiceApplication = rollCallServiceApplication;
|
||
_passwordHasher = passwordHasher;
|
||
}
|
||
|
||
public OperationResult Create(CreateWorkshop command)
|
||
{
|
||
bool createPlanValidations = false;
|
||
var accountIds = new List<long>();
|
||
var operation = new OperationResult();
|
||
if (command.EmployerIdList == null)
|
||
return operation.Failed("لطفا کارفرما را انتخاب نمایید");
|
||
var employer = command.EmployerIdList.ToList();
|
||
if (command.AccountIdsList != null)
|
||
{
|
||
accountIds = command.AccountIdsList.ToList();
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(command.TypeOfInsuranceSend) && command.TypeOfInsuranceSend != "false" &&
|
||
string.IsNullOrEmpty(command.InsuranceCode))
|
||
return operation.Failed("لطفا کد بیمه کارگاه را وارد کنید");
|
||
|
||
|
||
if (string.IsNullOrEmpty(command.WorkshopName) || string.IsNullOrEmpty(command.ArchiveCode))
|
||
return operation.Failed("موارد اجباری را پر کنید");
|
||
|
||
//if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName))
|
||
// return operation.Failed("نام کارگاه تکراری است");
|
||
|
||
if (command.ContractTerm != "1" && command.ContractTerm != "ForEver" &&
|
||
(command.CutContractEndOfYear != IsActive.False && command.CutContractEndOfYear != IsActive.True))
|
||
return operation.Failed("لطفا تیک قرداداد منتهی به پایان سال را تعیین وضعیت کنید");
|
||
|
||
if (command.ContractTerm == "1" && command.ContractTerm == "ForEver")
|
||
command.CutContractEndOfYear = IsActive.None;
|
||
if (!command.CreateContract)
|
||
{
|
||
command.SignContract = false;
|
||
command.CreateCheckout = false;
|
||
command.SignCheckout = false;
|
||
}
|
||
|
||
if (!command.CreateCheckout)
|
||
{
|
||
command.SignCheckout = false;
|
||
}
|
||
|
||
|
||
if (_workshopRepository.Exists(x =>
|
||
!string.IsNullOrEmpty(x.InsuranceCode) && x.InsuranceCode == command.InsuranceCode))
|
||
return operation.Failed("کد بیمه کارگاه تکراری است");
|
||
|
||
if (!string.IsNullOrEmpty(command.Address) && string.IsNullOrEmpty(command.State))
|
||
return operation.Failed("لطفا استان و شهر را انتخاب کنید");
|
||
if ((!string.IsNullOrEmpty(command.Address) && !string.IsNullOrEmpty(command.State)) &&
|
||
command.City == "شهرستان")
|
||
return operation.Failed("لطفا شهر را انتخاب کنید");
|
||
if (string.IsNullOrEmpty(command.Address) && !string.IsNullOrEmpty(command.State))
|
||
return operation.Failed("لطفا آدرس را وارد کنید");
|
||
|
||
|
||
if (command.FixedSalary)
|
||
{
|
||
if (command.InsuranceJobId == 0 || command.InsuranceJobId == null)
|
||
return operation.Failed("لطفا صنف را انتخاب کنید");
|
||
if (string.IsNullOrWhiteSpace(command.Population))
|
||
return operation.Failed("لطفا جمعیت شهر را انتخاب کنید");
|
||
}
|
||
|
||
if (command.IsClassified)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(command.CreatePlan.ExecutionDateFa) ||
|
||
command.CreatePlan.ExecutionDateFa.Length < 10)
|
||
return operation.Failed("تاریخ اجرای طرح را بصورت صحیح وارد کنید");
|
||
if (string.IsNullOrWhiteSpace(command.CreatePlan.IncludingDateFa) ||
|
||
command.CreatePlan.IncludingDateFa.Length < 10)
|
||
return operation.Failed("تاریخ شمول طرح را بصورت صحیح وارد کنید");
|
||
var groupCounter = 0;
|
||
// var planEmployeeCounter = command.CreatePlan.EditWorkshopPlanEmployeeList == null ? 0 : command.CreatePlan.EditWorkshopPlanEmployeeList.Count;
|
||
for (int i = 0; i <= command.CreatePlan.EditGroupPlanlist.Count - 1; i++)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].AnnualSalaryStr)
|
||
&& !string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].BaseSalaryStr)
|
||
&& !string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].JobSalaryStr)
|
||
&& command.CreatePlan.EditGroupPlanlist[i].JobIdList.Count > 0)
|
||
{
|
||
groupCounter += 1;
|
||
}
|
||
}
|
||
|
||
if (groupCounter >= 1)
|
||
{
|
||
createPlanValidations = true;
|
||
}
|
||
else
|
||
{
|
||
createPlanValidations = false;
|
||
return operation.Failed("وارد کردن اطلاعات تمامی گروه ها الزامی است");
|
||
}
|
||
}
|
||
|
||
//if (string.IsNullOrWhiteSpace(command.TypeOfInsuranceSend))
|
||
// return operation.Failed("لطفا نوع ارسال لیست بیمه را مشخص کنید");
|
||
var account = new AccountViewModel();
|
||
var institutionContract = new InstitutionContract();
|
||
|
||
if (command.HasRollCallFreeVip == "true")
|
||
{
|
||
institutionContract =
|
||
_institutionContractRepository.InstitutionContractByEmployerId(employer.FirstOrDefault());
|
||
if (institutionContract == null)
|
||
return operation.Failed("بدلیل نداشتن قرار داد مالی نمیتوانید سرویس حضور غیاب را فعال کنید");
|
||
account = _personalContractingPartyRepository.GetAccountByPersonalContractingParty(institutionContract
|
||
.ContractingPartyId);
|
||
if (account == null || account.ClientAreaPermission != "true")
|
||
return operation.Failed("بدلیل نداشتن حساب کاربری کلاینت نمیتوانید سرویس حضور غیاب را فعال کنید");
|
||
}
|
||
|
||
var workshop = new Workshop(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode,
|
||
command.TypeOfOwnership,
|
||
command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City,
|
||
command.Address,
|
||
command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber
|
||
, command.FixedSalary, command.Population, command.InsuranceJobId, command.ZoneName, command.AddBonusesPay,
|
||
command.AddYearsPay, command.AddLeavePay, command.TotalPaymentHide, command.IsClassified,
|
||
command.ComputeOptions,
|
||
command.BonusesOptions, command.YearsOptions, command.HasRollCallFreeVip, command.WorkshopHolidayWorking,
|
||
command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance, command.CreateContract,
|
||
command.SignContract,
|
||
command.CreateCheckout, command.SignCheckout, command.CutContractEndOfYear, command.RotatingShiftCompute,
|
||
command.IsStaticCheckout, institutionContract.ContractingPartyId);
|
||
_workshopRepository.Create(workshop);
|
||
_workshopRepository.SaveChanges();
|
||
|
||
if (command.HasRollCallFreeVip == "true")
|
||
{
|
||
var commandSave = new CreateRollCallService()
|
||
{
|
||
AccountId = account.Id,
|
||
WorkshopId = workshop.id,
|
||
ServiceType = "vip",
|
||
EndService = institutionContract.ContractEndGr,
|
||
Amount = 1000,
|
||
MaxPersonValid = 500,
|
||
Duration = "12",
|
||
HasCustomizeCheckoutService = command.HasCustomizeCheckoutService
|
||
};
|
||
_rollCallServiceApplication.Create(commandSave);
|
||
}
|
||
|
||
//مشاغل مقطوع
|
||
if (createPlanValidations)
|
||
{
|
||
command.CreatePlan.WorkshopId = workshop.id;
|
||
var creatPlan = _workshopPlanApplication.CreateWorkshopPlan(command.CreatePlan);
|
||
}
|
||
|
||
|
||
foreach (var e in employer)
|
||
{
|
||
_workshopRepository.EmployerWorkshop(workshop.id, e);
|
||
}
|
||
|
||
|
||
var op = _workshopRepository.CreateAccountLeftWorkAndWorkshopAccounts(accountIds, workshop.id);
|
||
|
||
|
||
return operation.Succcedded();
|
||
}
|
||
|
||
public OperationResult Edit(EditWorkshop command)
|
||
{
|
||
using var transaction = new TransactionScope();
|
||
var leftSearch = new LeftWorkSearchModel()
|
||
{
|
||
WorkshopId = command.Id
|
||
};
|
||
var leftWork = _leftWorkRepository.search(leftSearch);
|
||
var accountIds = new List<long>();
|
||
var operation = new OperationResult();
|
||
var workshop = _workshopRepository.Get(command.Id);
|
||
if (command.AccountIdsList != null)
|
||
{
|
||
accountIds = command.AccountIdsList.ToList();
|
||
}
|
||
|
||
if (workshop == null)
|
||
operation.Failed("رکورد مورد نظر وجود ندارد");
|
||
if (command.EmployerIdList == null)
|
||
return operation.Failed("لطفا کارفرما را انتخاب نمایید");
|
||
var employer = command.EmployerIdList.ToList();
|
||
|
||
//if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName && x.id != command.Id))
|
||
// return operation.Failed(" نام کارگاه تکراری است ");
|
||
|
||
if (command.ContractTerm != "1" && command.ContractTerm != "ForEver" &&
|
||
(command.CutContractEndOfYear != IsActive.False && command.CutContractEndOfYear != IsActive.True))
|
||
return operation.Failed("لطفا تیک قرداداد منتهی به پایان سال را تعیین وضعیت کنید");
|
||
|
||
if (command.ContractTerm == "1" && command.ContractTerm == "ForEver")
|
||
command.CutContractEndOfYear = IsActive.None;
|
||
if (!command.CreateContract)
|
||
{
|
||
command.SignContract = false;
|
||
command.CreateCheckout = false;
|
||
command.SignCheckout = false;
|
||
}
|
||
|
||
if (!command.CreateCheckout)
|
||
{
|
||
command.SignCheckout = false;
|
||
}
|
||
|
||
|
||
if (command.TypeOfInsuranceSend != null && string.IsNullOrEmpty(command.InsuranceCode))
|
||
return operation.Failed("لطفا کد بیمه کارگاه را وارد کنید");
|
||
if (_workshopRepository.Exists(x =>
|
||
!string.IsNullOrEmpty(x.InsuranceCode) && x.InsuranceCode == command.InsuranceCode &&
|
||
x.id != command.Id))
|
||
return operation.Failed("کد بیمه کارگاه تکراری است");
|
||
|
||
if (command.Address != null && command.State == null)
|
||
return operation.Failed("لطفا استان و شهر را انتخاب کنید");
|
||
if ((command.Address != null && command.State != null) && command.City == "شهرستان")
|
||
return operation.Failed("لطفا شهر را انتخاب کنید");
|
||
|
||
if (command.Address == null && command.State != null)
|
||
return operation.Failed("لطفا آدرس را وارد کنید");
|
||
|
||
if (command.ComputeOptions == "0")
|
||
{
|
||
return operation.Failed("لطفا نوع محاسبه عیدی پاداش ، مزد مرخصی و سنوات را انتخاب کنید.");
|
||
}
|
||
|
||
if (command.FixedSalary)
|
||
{
|
||
if (command.InsuranceJobId == 0 || command.InsuranceJobId == null)
|
||
return operation.Failed("لطفا صنف را انتخاب کنید");
|
||
if (string.IsNullOrWhiteSpace(command.Population))
|
||
return operation.Failed("لطفا جمعیت شهر را انتخاب کنید");
|
||
}
|
||
|
||
var account = new AccountViewModel();
|
||
var institutionContract = new InstitutionContract();
|
||
|
||
|
||
if (command.HasRollCallFreeVip == "true")
|
||
{
|
||
institutionContract =
|
||
_institutionContractRepository.InstitutionContractByEmployerId(employer.FirstOrDefault());
|
||
if (institutionContract == null)
|
||
return operation.Failed("بدلیل نداشتن قرار داد مالی نمیتوانید سرویس حضور غیاب را فعال کنید");
|
||
account = _personalContractingPartyRepository.GetAccountByPersonalContractingParty(institutionContract
|
||
.ContractingPartyId);
|
||
if ((account == null || account.ClientAreaPermission != "true") && command.Id != 11)
|
||
return operation.Failed("بدلیل نداشتن حساب کاربری کلاینت نمیتوانید سرویس حضور غیاب را فعال کنید");
|
||
var searchService = _rollCallServiceApplication.GetAllServiceByWorkshopId(command.Id);
|
||
var commandSave = new CreateRollCallService()
|
||
{
|
||
AccountId = account.Id,
|
||
WorkshopId = command.Id,
|
||
ServiceType = "vip",
|
||
EndService = institutionContract.ContractEndGr,
|
||
Amount = 1000,
|
||
MaxPersonValid = 500,
|
||
Duration = "12",
|
||
HasCustomizeCheckoutService = command.HasCustomizeCheckoutService
|
||
};
|
||
if (searchService.Count > 0)
|
||
{
|
||
var hasService = searchService.FirstOrDefault(x =>
|
||
x.IsActiveString == "true" && x.StartService <= DateTime.Now &&
|
||
x.EndService >= DateTime.Now);
|
||
if (hasService == null)
|
||
{
|
||
_rollCallServiceApplication.Create(commandSave);
|
||
}
|
||
else
|
||
{
|
||
//اگر سرویس وی آی پی داشت اما سرویس فیش غیر رسمی نداشت و در کارگاه تیک یجاد فیش غیر رسمی زده شد بساز
|
||
if (command.HasCustomizeCheckoutService == "true" &&
|
||
hasService.HasCustomizeCheckoutService != "true")
|
||
{
|
||
_rollCallServiceApplication.AddCustomizeCheckoutServiceVip(hasService.Id);
|
||
}
|
||
else if (command.HasCustomizeCheckoutService == "false" &&
|
||
hasService.HasCustomizeCheckoutService == "true")
|
||
{
|
||
_rollCallServiceApplication.StopVipService(hasService.Id);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_rollCallServiceApplication.Create(commandSave);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var searchService = _rollCallServiceApplication.GetAllServiceByWorkshopId(command.Id);
|
||
if (searchService.Count > 0)
|
||
{
|
||
var hasService = searchService.FirstOrDefault(x =>
|
||
x.IsActiveString == "true" && x.StartService.Date <= DateTime.Now &&
|
||
x.EndService >= DateTime.Now && x.ServiceType == "vip");
|
||
if (hasService != null)
|
||
{
|
||
_rollCallServiceApplication.StopVipService(hasService.Id);
|
||
}
|
||
}
|
||
}
|
||
|
||
workshop.Edit(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode, command.TypeOfOwnership,
|
||
command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City,
|
||
command.Address,
|
||
command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber
|
||
, command.FixedSalary, command.Population, command.InsuranceJobId, command.ZoneName,
|
||
command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay, command.TotalPaymentHide,
|
||
command.IsClassified,
|
||
command.ComputeOptions, command.BonusesOptions, command.YearsOptions, command.HasRollCallFreeVip,
|
||
command.WorkshopHolidayWorking, command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance,
|
||
command.CreateContract, command.SignContract, command.CreateCheckout, command.SignCheckout,
|
||
command.CutContractEndOfYear, command.RotatingShiftCompute, command.IsStaticCheckout);
|
||
_workshopRepository.SaveChanges();
|
||
|
||
_workshopRepository.RemoveOldRelation(command.Id);
|
||
foreach (var e in employer)
|
||
{
|
||
_workshopRepository.EmployerWorkshop(workshop.id, e);
|
||
}
|
||
|
||
var op = _workshopRepository.EditAccountLeftWorkAndWorkshopAccounts(accountIds, workshop.id);
|
||
foreach (var item in leftWork)
|
||
{
|
||
var editLeft = _leftWorkRepository.Get(item.Id);
|
||
|
||
editLeft.EditBonuses(command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay);
|
||
_leftWorkRepository.SaveChanges();
|
||
}
|
||
|
||
transaction.Complete();
|
||
return operation.Succcedded();
|
||
}
|
||
|
||
public string GetWorkshopFullname(long id)
|
||
{
|
||
var workshop = _workshopRepository.Get(id);
|
||
return workshop == null ? "" : workshop.WorkshopFullName;
|
||
}
|
||
|
||
public EditWorkshop GetDetails(long id)
|
||
{
|
||
var workshop = _workshopRepository.GetDetails(id);
|
||
if (workshop.IsClassified)
|
||
{
|
||
workshop.CreatePlan = _workshopPlanApplication.GetWorkshopPlanByWorkshopId(id);
|
||
}
|
||
|
||
|
||
return workshop;
|
||
}
|
||
|
||
public List<WorkshopViewModel> GetWorkshop()
|
||
{
|
||
return _workshopRepository.GetWorkshop();
|
||
}
|
||
|
||
public List<WorkshopViewModel> GetWorkshopAll()
|
||
{
|
||
return _workshopRepository.GetWorkshopAll();
|
||
}
|
||
|
||
public List<WorkshopViewModel> GetWorkshopAccount()
|
||
{
|
||
return _workshopRepository.GetWorkshopAccount();
|
||
}
|
||
|
||
public List<WorkshopViewModel> GetWorkshopsByEmployerId(List<long> emloyerIds)
|
||
{
|
||
return _workshopRepository.GetWorkshopsByEmployerId(emloyerIds);
|
||
}
|
||
|
||
public List<ConnectedPersonnelViewModel> GetConnectedPersonnels(long workshopId)
|
||
{
|
||
//return _workshopRepository.GetConnectedPersonnels(workshopId);
|
||
var res = _workshopRepository.GetConnectedPersonnels(workshopId);
|
||
res = res.Select(x => new ConnectedPersonnelViewModel
|
||
{
|
||
WorkshopId = x.WorkshopId,
|
||
EmployeeId = x.EmployeeId,
|
||
PersonelCode = x.PersonelCode,
|
||
PersonName = x.PersonName,
|
||
NationalCode = _employeeApplication.GetDetails(x.EmployeeId).NationalCode,
|
||
ContractPerson = x.ContractPerson,
|
||
InsurancePerson = x.InsurancePerson,
|
||
ContractLeft = x.ContractLeft,
|
||
InsurancetLeft = x.InsurancetLeft,
|
||
Black = ((x.ContractPerson && x.InsurancePerson && x.InsurancetLeft && x.ContractLeft) ||
|
||
(x.ContractPerson && !x.InsurancePerson && x.ContractLeft) ||
|
||
(x.InsurancePerson && !x.ContractPerson && x.InsurancetLeft))
|
||
? true
|
||
: false
|
||
}).ToList();
|
||
return res;
|
||
}
|
||
|
||
#region Vafa
|
||
|
||
public List<PersonnelInfoViewModel> GetPersonnelInfo(PersonnelInfoSearchModel searchModel)
|
||
{
|
||
var res = _workshopRepository.GetPersonnelInfo(searchModel.WorkshopId);
|
||
res = res.Select(x => new PersonnelInfoViewModel
|
||
{
|
||
WorkshopId = x.WorkshopId,
|
||
EmployeeId = x.EmployeeId,
|
||
PersonnelCode = x.PersonnelCode,
|
||
FullName = x.FullName,
|
||
Name = _employeeApplication.GetDetails(x.EmployeeId).FName,
|
||
LastName = _employeeApplication.GetDetails(x.EmployeeId).LName,
|
||
NationalCode = _employeeApplication.GetDetails(x.EmployeeId).NationalCode,
|
||
IdNumber = _employeeApplication.GetDetails(x.EmployeeId).IdNumber,
|
||
MaritalStatus = _employeeApplication.GetDetails(x.EmployeeId).MaritalStatus,
|
||
DateOfBirthFa = _employeeApplication.GetDetails(x.EmployeeId).DateOfBirth,
|
||
FatherName = _employeeApplication.GetDetails(x.EmployeeId).FatherName,
|
||
ChildrenList = _employeeChildrenApplication.GetChildren(x.EmployeeId),
|
||
ContractPerson = x.ContractPerson,
|
||
InsurancePerson = x.InsurancePerson,
|
||
ContractLeft = x.ContractLeft,
|
||
InsuranceLeft = x.InsuranceLeft,
|
||
Black = ((x.ContractPerson && x.InsurancePerson && x.InsuranceLeft && x.ContractLeft) ||
|
||
(x.ContractPerson && !x.InsurancePerson && x.ContractLeft) ||
|
||
(x.InsurancePerson && !x.ContractPerson && x.InsuranceLeft))
|
||
? true
|
||
: false,
|
||
LastStartContractWork = x.LastStartContractWork,
|
||
LastLeftContractWork = x.LastLeftContractWork,
|
||
LastStartInsuranceWork = x.LastStartInsuranceWork,
|
||
LastLeftInsuranceWork = x.LastLeftInsuranceWork
|
||
}).ToList();
|
||
|
||
if (!string.IsNullOrWhiteSpace(searchModel.FullName))
|
||
res = res.Where(x => x.FullName.Contains(searchModel.FullName)).ToList();
|
||
|
||
if (!string.IsNullOrWhiteSpace(searchModel.NationalCode))
|
||
res = res.Where(x => x.NationalCode.Contains(searchModel.NationalCode)).ToList();
|
||
|
||
if (!string.IsNullOrWhiteSpace(searchModel.MaritalStatus))
|
||
res = res.Where(x => x.MaritalStatus == searchModel.MaritalStatus).ToList();
|
||
|
||
return res;
|
||
}
|
||
|
||
#endregion
|
||
|
||
public int PersonnelCount(long workshopId)
|
||
{
|
||
return _workshopRepository.PersonnnelCount(workshopId);
|
||
}
|
||
|
||
public List<WorkshopViewModel> Search(WorkshopSearchModel searchModel)
|
||
{
|
||
return _workshopRepository.Search(searchModel);
|
||
}
|
||
|
||
public OperationResult Active(long id)
|
||
{
|
||
var opration = new OperationResult();
|
||
var workshop = _workshopRepository.Get(id);
|
||
if (workshop == null)
|
||
return opration.Failed("رکورد مورد نظر یافت نشد");
|
||
|
||
workshop.Active(workshop.ArchiveCode);
|
||
|
||
_workshopRepository.SaveChanges();
|
||
return opration.Succcedded();
|
||
}
|
||
|
||
public OperationResult DeActive(long id)
|
||
{
|
||
var opration = new OperationResult();
|
||
var workshop = _workshopRepository.Get(id);
|
||
if (workshop == null)
|
||
return opration.Failed("رکورد مورد نظر یافت نشد");
|
||
|
||
var checkLeftWork = _leftWorkRepository.searchByWorkshopId(id);
|
||
var checkInsurancLeftWork = _leftWorkInsuranceRepository.searchByWorkshopId(id);
|
||
if (checkLeftWork.Count > 0 || checkInsurancLeftWork.Count > 0)
|
||
{
|
||
return opration.Failed("به این کارگاه پرسنل نصبت داده شده است");
|
||
}
|
||
else
|
||
{
|
||
workshop.DeActive(workshop.ArchiveCode);
|
||
_workshopRepository.SaveChanges();
|
||
return opration.Succcedded(id, "عملیت با موفقیت انجام شد");
|
||
}
|
||
|
||
|
||
//var s = workshop.ArchiveCode;
|
||
}
|
||
|
||
public WorkshopViewModel GetWorkshopInfo(long id)
|
||
{
|
||
return _workshopRepository.GetWorkshopInfo(id);
|
||
}
|
||
|
||
|
||
public OperationResult Err()
|
||
{
|
||
var opration = new OperationResult();
|
||
return opration.Failed("شماره بایگانی باید شامل عدد باشد");
|
||
}
|
||
|
||
public OperationResult ExistErr()
|
||
{
|
||
var opration = new OperationResult();
|
||
return opration.Failed("شماره بایگانی تکراری است");
|
||
}
|
||
|
||
#region client
|
||
|
||
public OperationResult Remove(long id)
|
||
{
|
||
var opration = new OperationResult();
|
||
|
||
bool result = _workshopRepository.Remove(id);
|
||
if (result)
|
||
{
|
||
opration.Message = "حذف با موفقیت انجام شد";
|
||
opration.IsSuccedded = true;
|
||
}
|
||
else
|
||
return opration.Failed("حذف با خطا مواجه نشد");
|
||
|
||
return opration;
|
||
}
|
||
|
||
public List<WorkshopViewModel> GetWorkshopByTextSearchForClient(string textSearch)
|
||
{
|
||
return _workshopRepository.GetWorkshopByTextSearchForClient(textSearch);
|
||
}
|
||
|
||
public List<WorkshopViewModel> SearchForClient(WorkshopSearchModel searchModel)
|
||
{
|
||
return _workshopRepository.SearchForClient(searchModel);
|
||
}
|
||
|
||
public OperationResult CreateForClient(CreateWorkshop command)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
|
||
public OperationResult EditForClient(EditWorkshop command)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
//public OperationResult CreateForClient(CreateWorkshop command)
|
||
//{
|
||
|
||
// var accountIds = new List<long>();
|
||
// var operation = new OperationResult();
|
||
// //if (command.EmployerIdList == null)
|
||
// // return operation.Failed("لطفا کارفرما را انتخاب نمایید");
|
||
// var employer = command.EmployerIdList.ToList();
|
||
// if (command.AccountIdsList != null)
|
||
// {
|
||
// accountIds = command.AccountIdsList.ToList();
|
||
// }
|
||
|
||
// if (string.IsNullOrEmpty(command.WorkshopName) || string.IsNullOrEmpty(command.ArchiveCode) || command.ArchiveCode == "0")
|
||
// return operation.Failed("موارد اجباری را پر کنید");
|
||
// //if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName))
|
||
// // return operation.Failed("نام کارگاه تکراری است");
|
||
// if (_workshopRepository.Exists(x => x.InsuranceCode != null && x.InsuranceCode == command.InsuranceCode))
|
||
// {
|
||
// if (_workshopRepository.ExistsWorkshopAccountInsuranceCode(command.InsuranceCode))
|
||
// return operation.Failed("کد بیمه کارگاه تکراری است");
|
||
// }
|
||
|
||
// if (_workshopRepository.ExistsWorkshopAccountArchiveCode(command.ArchiveCode))
|
||
// return operation.Failed("شماره بایگانی تکراری است");
|
||
|
||
// if (string.IsNullOrEmpty(command.State)) //(!string.IsNullOrEmpty(command.Address) && string.IsNullOrEmpty(command.State))
|
||
// return operation.Failed("لطفا استان و شهر را انتخاب کنید");
|
||
|
||
// if (command.City == "0" || command.City == "شهرستان")
|
||
// return operation.Failed("لطفا شهر را انتخاب کنید");
|
||
// if (string.IsNullOrEmpty(command.Address))
|
||
// return operation.Failed("لطفا آدرس را وارد کنید");
|
||
|
||
// if (!string.IsNullOrEmpty(command.TypeOfInsuranceSend) && command.TypeOfInsuranceSend != "false" && string.IsNullOrEmpty(command.InsuranceCode))
|
||
// return operation.Failed("لطفا کد بیمه کارگاه را وارد کنید");
|
||
|
||
// if (command.FixedSalary)
|
||
// {
|
||
// if (command.InsuranceJobId == 0 || command.InsuranceJobId == null)
|
||
// return operation.Failed("لطفا صنف را انتخاب کنید");
|
||
// if (string.IsNullOrWhiteSpace(command.Population))
|
||
// return operation.Failed("لطفا جمعیت شهر را انتخاب کنید");
|
||
// }
|
||
|
||
// //if (string.IsNullOrWhiteSpace(command.TypeOfInsuranceSend))
|
||
// // return operation.Failed("لطفا نوع ارسال لیست بیمه را مشخص کنید");
|
||
|
||
// var workshop = new Workshop(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode,command.TypeOfOwnership,
|
||
// command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City, command.Address,
|
||
// command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber, command.FixedSalary,
|
||
// command.Population, command.InsuranceJobId, command.ZoneName, command.AddBonusesPay,
|
||
// command.AddYearsPay, command.AddLeavePay,command.TotalPaymentHide, command.IsClassified, command.ComputeOptions,
|
||
// command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking,
|
||
// command.InsuranceCheckoutOvertime,command.InsuranceCheckoutFamilyAllowance);
|
||
// _workshopRepository.Create(workshop);
|
||
// _workshopRepository.SaveChanges();
|
||
|
||
|
||
// foreach (var e in employer)
|
||
// {
|
||
// _workshopRepository.EmployerWorkshop(workshop.id, e);
|
||
// }
|
||
|
||
|
||
// _workshopRepository.CreateWorkshopAccounts(accountIds, workshop.id);
|
||
|
||
|
||
// return operation.Succcedded();
|
||
|
||
|
||
//}
|
||
|
||
//public OperationResult EditForClient(EditWorkshop command)
|
||
//{
|
||
// var leftSearch = new LeftWorkSearchModel()
|
||
// {
|
||
// WorkshopId = command.Id
|
||
// };
|
||
// var leftWork = _leftWorkRepository.search(leftSearch);
|
||
// var accountIds = new List<long>();
|
||
// var operation = new OperationResult();
|
||
// var workshop = _workshopRepository.Get(command.Id);
|
||
// if (command.AccountIdsList != null)
|
||
// {
|
||
// accountIds = command.AccountIdsList.ToList();
|
||
// }
|
||
// if (workshop == null)
|
||
// operation.Failed("رکورد مورد نظر وجود ندارد");
|
||
// if (command.EmployerIdList == null)
|
||
// return operation.Failed("لطفا کارفرما را انتخاب نمایید");
|
||
// var employer = command.EmployerIdList.ToList();
|
||
|
||
// if (string.IsNullOrEmpty(command.WorkshopName) || string.IsNullOrEmpty(command.ArchiveCode) || command.ArchiveCode == "0")
|
||
// return operation.Failed("موارد اجباری را پر کنید");
|
||
|
||
// //if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName && x.id != command.Id))
|
||
// // return operation.Failed(" رکورد مورد نظر تکراری است ");
|
||
// if (_workshopRepository.Exists(x =>
|
||
// x.InsuranceCode != null && x.InsuranceCode == command.InsuranceCode && x.id != command.Id))
|
||
// {
|
||
// if (_workshopRepository.ExistsWorkshopAccountInsuranceCodeByworkshopId(command.Id, command.InsuranceCode))
|
||
// return operation.Failed("کد بیمه کارگاه تکراری است");
|
||
// }
|
||
|
||
// if (_workshopRepository.ExistsWorkshopAccountArchiveCodeByWorkshopId(command.Id, command.ArchiveCode))
|
||
// return operation.Failed("شماره بایگانی تکراری است");
|
||
|
||
// if (command.State == null)
|
||
// return operation.Failed("لطفا استان و شهر را انتخاب کنید");
|
||
// if ((command.City == "0" || command.City == "شهرستان"))
|
||
// return operation.Failed("لطفا شهر را انتخاب کنید");
|
||
// if (command.TypeOfInsuranceSend != null && command.InsuranceCode == null)
|
||
// return operation.Failed("لطفا کد بیمه کارگاه را وارد کنید");
|
||
// if (command.Address == null)
|
||
// return operation.Failed("لطفا آدرس را وارد کنید");
|
||
// if (command.FixedSalary)
|
||
// {
|
||
// if (command.InsuranceJobId == 0 || command.InsuranceJobId == null)
|
||
// return operation.Failed("لطفا صنف را انتخاب کنید");
|
||
// if (string.IsNullOrWhiteSpace(command.Population))
|
||
// return operation.Failed("لطفا جمعیت شهر را انتخاب کنید");
|
||
// }
|
||
|
||
// workshop.Edit(command.WorkshopName, command.WorkshopSureName, command.InsuranceCode, command.TypeOfOwnership,
|
||
// command.ArchiveCode, command.AgentName, command.AgentPhone, command.State, command.City,
|
||
// command.Address,
|
||
// command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber
|
||
// , command.FixedSalary, command.Population, command.InsuranceJobId, command.ZoneName,
|
||
// command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay,command.TotalPaymentHide,command.IsClassified,
|
||
// command.ComputeOptions, command.BonusesOptions, command.YearsOptions,command.HasRollCallFreeVip, command.WorkshopHolidayWorking,
|
||
// command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance);
|
||
// _workshopRepository.SaveChanges();
|
||
|
||
// //_workshopRepository.RemoveOldRelation(command.Id);
|
||
// _workshopRepository.RemoveEmployerWorkshop(command.Id);
|
||
// foreach (var e in employer)
|
||
// {
|
||
// _workshopRepository.EmployerWorkshop(workshop.id, e);
|
||
// }
|
||
// // _workshopRepository.WorkshopAccounts(accountIds, workshop.id);
|
||
// foreach (var item in leftWork)
|
||
// {
|
||
// var editLeft = _leftWorkRepository.Get(item.Id);
|
||
|
||
// editLeft.EditBonuses(command.AddBonusesPay, command.AddYearsPay, command.AddLeavePay);
|
||
// _leftWorkRepository.SaveChanges();
|
||
// }
|
||
// return operation.Succcedded();
|
||
|
||
//}
|
||
|
||
public bool GetWorkshopAccountByAcountID(long acountID)
|
||
{
|
||
return _workshopRepository.GetWorkshopAccountByAcountID(acountID);
|
||
}
|
||
|
||
public bool CheckAccountWorkshop(long workshopId)
|
||
{
|
||
return _workshopRepository.CheckAccountWorkshop(workshopId);
|
||
}
|
||
|
||
public List<WorkshopViewModel> SearchForClientRollCall()
|
||
{
|
||
return _workshopRepository.SearchForClientRollCall();
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
#region NewByHeydari
|
||
|
||
public List<WorkshopViewModel> GetWorkshopByTextSearch(string searchText)
|
||
{
|
||
return _workshopRepository.GetWorkshopByTextSearch(searchText);
|
||
}
|
||
|
||
public List<WorkshopViewModel> SearchForMain(WorkshopSearchModel searchModel)
|
||
{
|
||
return _workshopRepository.SearchForMain(searchModel);
|
||
}
|
||
|
||
public OperationResult DeleteWorkshop(long id)
|
||
{
|
||
var opration = new OperationResult();
|
||
|
||
var checkLeftWork = _leftWorkRepository.searchByWorkshopId(id);
|
||
var checkInsurancLeftWork = _leftWorkInsuranceRepository.searchByWorkshopId(id);
|
||
if (checkLeftWork.Count() > 0 || checkInsurancLeftWork.Count() > 0)
|
||
{
|
||
//var workshopObj = _workshopRepository.Get(id);
|
||
//workshopObj.DeActive(workshopObj.ArchiveCode);
|
||
//_workshopRepository.SaveChanges();
|
||
return _workshopRepository.DeActiveAll(id);
|
||
;
|
||
}
|
||
else
|
||
{
|
||
bool result = _workshopRepository.Remove(id);
|
||
if (result)
|
||
{
|
||
opration.Succcedded(-1, "حذف با موفقیت انجام شد");
|
||
}
|
||
else
|
||
return opration.Failed("حذف با خطا مواجه نشد");
|
||
}
|
||
|
||
return opration;
|
||
}
|
||
|
||
public OperationResult ActiveAll(long id)
|
||
{
|
||
return _workshopRepository.ActiveAll(id);
|
||
}
|
||
|
||
public List<PrintListWorkshop> PrintWorkshopList(WorkshopSearchModel searchModel)
|
||
{
|
||
return _workshopRepository.PrintWorkshopList(searchModel);
|
||
}
|
||
|
||
|
||
public AccountViewModel GetClientAccountByWorkshopId(long workshopId)
|
||
{
|
||
var contractingParty = _workshopRepository.GetPersonalContractingPartyByWorkshopId(workshopId);
|
||
return _personalContractingPartyRepository.GetAccountByPersonalContractingParty(contractingParty.id);
|
||
}
|
||
|
||
|
||
//public List<ConnectedPersonnelViewModel> GetConnectedPersonnelsForMain(long workshopId)
|
||
//{
|
||
// return _workshopRepository.GetConnectedPersonnelsForMain(workshopId);
|
||
//}
|
||
|
||
#endregion
|
||
|
||
|
||
#region Pooya
|
||
|
||
public List<PersonnelInfoViewModel> GetPersonnelInfoRemastered(PersonnelInfoSearchModel searchModel)
|
||
{
|
||
var res = _workshopRepository.GetPersonnelInfoRemastered(searchModel.WorkshopId);
|
||
res = res.Select(x => new PersonnelInfoViewModel
|
||
{
|
||
WorkshopId = x.WorkshopId,
|
||
EmployeeId = x.EmployeeId,
|
||
PersonnelCode = x.PersonnelCode,
|
||
FullName = x.FullName,
|
||
Name = x.Name,
|
||
LastName = x.LastName,
|
||
NationalCode = x.NationalCode,
|
||
IdNumber = x.IdNumber,
|
||
MaritalStatus = x.MaritalStatus,
|
||
DateOfBirthFa = x.DateOfBirthFa,
|
||
FatherName = x.FatherName,
|
||
State = x.State,
|
||
City = x.City,
|
||
Address = x.Address,
|
||
ChildrenList = x.ChildrenList,
|
||
ContractPerson = x.ContractPerson,
|
||
InsurancePerson = x.InsurancePerson,
|
||
ContractLeft = x.ContractLeft,
|
||
InsuranceLeft = x.InsuranceLeft,
|
||
Black = ((x.ContractPerson && x.InsurancePerson && x.InsuranceLeft && x.ContractLeft) ||
|
||
(x.ContractPerson && !x.InsurancePerson && x.ContractLeft) ||
|
||
(x.InsurancePerson && !x.ContractPerson && x.InsuranceLeft))
|
||
? true
|
||
: false,
|
||
LastStartContractWork = x.LastStartContractWork,
|
||
LastLeftContractWork = x.LastLeftContractWork,
|
||
LastStartInsuranceWork = x.LastStartInsuranceWork,
|
||
LastLeftInsuranceWork = x.LastLeftInsuranceWork,
|
||
WorkshopHash = _passwordHasher.SlugHasher(x.WorkshopId),
|
||
EmployeeHash = _passwordHasher.SlugHasher(x.EmployeeId),
|
||
CreatedByClient = x.CreatedByClient,
|
||
LefWorkTemp = x.LefWorkTemp,
|
||
LeftWork = x.LeftWork,
|
||
PersonnelInfoViewModels = x.PersonnelInfoViewModels,
|
||
StartWork = x.StartWork
|
||
}).ToList();
|
||
|
||
if (!string.IsNullOrWhiteSpace(searchModel.FullName))
|
||
res = res.Where(x => x.FullName.Contains(searchModel.FullName)).ToList();
|
||
|
||
if (!string.IsNullOrWhiteSpace(searchModel.NationalCode))
|
||
res = res.Where(x => x.NationalCode.Contains(searchModel.NationalCode)).ToList();
|
||
|
||
if (!string.IsNullOrWhiteSpace(searchModel.MaritalStatus))
|
||
res = res.Where(x => x.MaritalStatus == searchModel.MaritalStatus).ToList();
|
||
return res;
|
||
}
|
||
|
||
#endregion
|
||
|
||
|
||
#region Insurance
|
||
|
||
public List<WorkshopViewModel> GetWorkshopSelectListInsuransce()
|
||
{
|
||
return _workshopRepository.GetWorkshopSelectListInsuransce();
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region Mahan
|
||
|
||
public async Task<List<WorkshopWithStartedEmployeesDto>> GetWorkshopsForEmployeeStartWork(long accountId)
|
||
{
|
||
return await _workshopRepository.GetWorkshopsForEmployeeStartWork(accountId);
|
||
}
|
||
|
||
public async Task<int> GetWorkshopsForEmployeeStartWorkCount(long accountId)
|
||
{
|
||
return await _workshopRepository.GetWorkshopsForEmployeeStartWorkCount(accountId);
|
||
}
|
||
|
||
public async Task<List<WorkshopWithLeftWorkTempEmployeesDto>> GetWorkshopsForLeftWorkTemp(long accountId)
|
||
{
|
||
return await _workshopRepository.GetWorkshopsForLeftWorkTemp(accountId);
|
||
}
|
||
|
||
public Task<int> GetWorkshopsForLeftWorkTempCount(long accountId)
|
||
{
|
||
return _workshopRepository.GetWorkshopsForLeftWorkTempCount(accountId);
|
||
}
|
||
|
||
public async Task<List<WorkshopSelectListViewModel>> GetSelectList(string search, long id)
|
||
{
|
||
return await _workshopRepository.GetSelectList(search, id);
|
||
}
|
||
|
||
public async Task<ActionResult<OperationResult>> CreateWorkshopWorkflowRegistration(
|
||
CreateWorkshopWorkflowRegistration command)
|
||
{
|
||
bool createPlanValidations = false;
|
||
var operation = new OperationResult();
|
||
var transaction = await _workshopRepository.BeginTransactionAsync();
|
||
var contractWorkshopInitial =
|
||
await _institutionContractRepository.GetInstitutionWorkshopInitialDetails(command.InstitutionContractWorkshopInitialId);
|
||
if (contractWorkshopInitial == null)
|
||
return operation.Failed("جزئیات قرارداد موسسه یافت نشد");
|
||
|
||
var employerIds = contractWorkshopInitial.Employers.Select(x => x.EmployerId).ToList();
|
||
|
||
if (employerIds.Count == 0)
|
||
return operation.Failed("لطفا کارفرما را انتخاب نمایید");
|
||
|
||
|
||
if (!string.IsNullOrEmpty(command.TypeOfInsuranceSend) && command.TypeOfInsuranceSend != "false" &&
|
||
string.IsNullOrEmpty(command.InsuranceCode))
|
||
return operation.Failed("لطفا کد بیمه کارگاه را وارد کنید");
|
||
|
||
|
||
if (string.IsNullOrEmpty(command.WorkshopName) || string.IsNullOrEmpty(command.ArchiveCode))
|
||
return operation.Failed("موارد اجباری را پر کنید");
|
||
|
||
//if (_workshopRepository.Exists(x => x.WorkshopName == command.WorkshopName))
|
||
// return operation.Failed("نام کارگاه تکراری است");
|
||
|
||
if (command.ContractTerm != "1" && command.ContractTerm != "ForEver" &&
|
||
(command.CutContractEndOfYear != IsActive.False && command.CutContractEndOfYear != IsActive.True))
|
||
return operation.Failed("لطفا تیک قرداداد منتهی به پایان سال را تعیین وضعیت کنید");
|
||
|
||
if (command.ContractTerm == "1" && command.ContractTerm == "ForEver")
|
||
command.CutContractEndOfYear = IsActive.None;
|
||
if (!command.CreateContract)
|
||
{
|
||
command.SignContract = false;
|
||
command.CreateCheckout = false;
|
||
command.SignCheckout = false;
|
||
}
|
||
|
||
if (!command.CreateCheckout)
|
||
{
|
||
command.SignCheckout = false;
|
||
}
|
||
|
||
|
||
if (_workshopRepository.Exists(x =>
|
||
!string.IsNullOrEmpty(x.InsuranceCode) && x.InsuranceCode == command.InsuranceCode))
|
||
return operation.Failed("کد بیمه کارگاه تکراری است");
|
||
|
||
if (!string.IsNullOrEmpty(command.Address) && string.IsNullOrEmpty(command.Province))
|
||
return operation.Failed("لطفا استان و شهر را انتخاب کنید");
|
||
if ((!string.IsNullOrEmpty(command.Address) && !string.IsNullOrEmpty(command.Province)) &&
|
||
command.City == "شهرستان")
|
||
return operation.Failed("لطفا شهر را انتخاب کنید");
|
||
if (string.IsNullOrEmpty(command.Address) && !string.IsNullOrEmpty(command.Province))
|
||
return operation.Failed("لطفا آدرس را وارد کنید");
|
||
|
||
|
||
if (command.FixedSalary)
|
||
{
|
||
if (command.InsuranceJobId == 0 || command.InsuranceJobId == null)
|
||
return operation.Failed("لطفا صنف را انتخاب کنید");
|
||
if (string.IsNullOrWhiteSpace(command.Population))
|
||
return operation.Failed("لطفا جمعیت شهر را انتخاب کنید");
|
||
}
|
||
|
||
// if (command.IsClassified)
|
||
// {
|
||
// if (string.IsNullOrWhiteSpace(command.CreatePlan.ExecutionDateFa) ||
|
||
// command.CreatePlan.ExecutionDateFa.Length < 10)
|
||
// return operation.Failed("تاریخ اجرای طرح را بصورت صحیح وارد کنید");
|
||
// if (string.IsNullOrWhiteSpace(command.CreatePlan.IncludingDateFa) ||
|
||
// command.CreatePlan.IncludingDateFa.Length < 10)
|
||
// return operation.Failed("تاریخ شمول طرح را بصورت صحیح وارد کنید");
|
||
// var groupCounter = 0;
|
||
// // var planEmployeeCounter = command.CreatePlan.EditWorkshopPlanEmployeeList == null ? 0 : command.CreatePlan.EditWorkshopPlanEmployeeList.Count;
|
||
// for (int i = 0; i <= command.CreatePlan.EditGroupPlanlist.Count - 1; i++)
|
||
// {
|
||
// if (!string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].AnnualSalaryStr)
|
||
// && !string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].BaseSalaryStr)
|
||
// && !string.IsNullOrWhiteSpace(command.CreatePlan.EditGroupPlanlist[i].JobSalaryStr)
|
||
// && command.CreatePlan.EditGroupPlanlist[i].JobIdList.Count > 0)
|
||
// {
|
||
// groupCounter += 1;
|
||
//
|
||
// }
|
||
// }
|
||
//
|
||
// if (groupCounter >= 1)
|
||
// {
|
||
// createPlanValidations = true;
|
||
//
|
||
// }
|
||
// else
|
||
// {
|
||
// createPlanValidations = false;
|
||
// return operation.Failed("وارد کردن اطلاعات تمامی گروه ها الزامی است");
|
||
// }
|
||
// }
|
||
|
||
//if (string.IsNullOrWhiteSpace(command.TypeOfInsuranceSend))
|
||
// return operation.Failed("لطفا نوع ارسال لیست بیمه را مشخص کنید");
|
||
var account = new AccountViewModel();
|
||
|
||
var institutionContract =
|
||
await _institutionContractRepository.GetIncludeWorkshopDetailsAsync(contractWorkshopInitial
|
||
.WorkshopGroup.InstitutionContractId);
|
||
if (institutionContract == null)
|
||
{
|
||
return operation.Failed("قرارداد مالی موسسه یافت نشد");
|
||
}
|
||
|
||
if (command.HasRollCallFreeVip == "true")
|
||
{
|
||
// if (institutionContract == null)
|
||
// return operation.Failed("بدلیل نداشتن قرار داد مالی نمیتوانید سرویس حضور غیاب را فعال کنید");
|
||
|
||
account = _personalContractingPartyRepository.GetAccountByPersonalContractingParty(institutionContract
|
||
.ContractingPartyId);
|
||
if (account == null || account.ClientAreaPermission != "true")
|
||
return operation.Failed("بدلیل نداشتن حساب کاربری کلاینت نمیتوانید سرویس حضور غیاب را فعال کنید");
|
||
}
|
||
|
||
var workshop = new Workshop(command.WorkshopName, command.SureName, command.InsuranceCode,
|
||
command.TypeOfOwnership,
|
||
command.ArchiveCode, command.AgentName, command.AgentPhone, command.Province, command.City,
|
||
command.Address,
|
||
command.TypeOfInsuranceSend, command.TypeOfContract, command.ContractTerm, command.AgreementNumber
|
||
, command.FixedSalary, command.Population, command.InsuranceJobId, null, true,
|
||
true, true, command.TotalPaymentHide, false,
|
||
command.ComputeOptions,
|
||
command.BonusesOptions, command.YearsOptions, command.HasRollCallFreeVip, command.WorkingInHoliday,
|
||
command.InsuranceCheckoutOvertime, command.InsuranceCheckoutFamilyAllowance, command.CreateContract,
|
||
command.SignContract,
|
||
command.CreateCheckout, command.SignCheckout, command.CutContractEndOfYear, command.RotatingShiftCompute,
|
||
command.IsStaticCheckout, institutionContract.ContractingPartyId);
|
||
await _workshopRepository.CreateAsync(workshop);
|
||
await _workshopRepository.SaveChangesAsync();
|
||
|
||
if (command.HasRollCallFreeVip == "true")
|
||
{
|
||
var commandSave = new CreateRollCallService()
|
||
{
|
||
AccountId = account.Id,
|
||
WorkshopId = workshop.id,
|
||
ServiceType = "vip",
|
||
EndService = institutionContract.ContractEndGr,
|
||
Amount = 1000,
|
||
MaxPersonValid = 500,
|
||
Duration = "12",
|
||
HasCustomizeCheckoutService = command.HasCustomizeCheckoutService
|
||
};
|
||
_rollCallServiceApplication.Create(commandSave);
|
||
}
|
||
|
||
contractWorkshopInitial.SetWorkshopId(workshop.id);
|
||
await _workshopRepository.SaveChangesAsync();
|
||
|
||
foreach (var e in employerIds)
|
||
{
|
||
_workshopRepository.EmployerWorkshop(workshop.id, e);
|
||
}
|
||
|
||
var accountIds = StaticWorkshopAccounts.StaticAccountIds.ToList();
|
||
accountIds.Add(command.SeniorContractAccountId);
|
||
accountIds.Add(command.JuniorContractAccountId);
|
||
accountIds.Add(command.SeniorInsuranceAccountId);
|
||
accountIds.Add(command.JuniorInsuranceAccountId);
|
||
|
||
var op = _workshopRepository
|
||
.CreateAccountLeftWorkAndWorkshopAccounts(accountIds.Distinct().ToList(),
|
||
workshop.id);
|
||
|
||
_institutionContractRepository.UpdateStatusIfNeeded(institutionContract.id);
|
||
|
||
if (!op.IsSuccedded)
|
||
return op;
|
||
|
||
await transaction.CommitAsync();
|
||
return operation.Succcedded();
|
||
}
|
||
|
||
#endregion
|
||
} |