Files
Backend-Api/CompanyManagment.Application/WorkshopAppliction.cs

1130 lines
50 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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,
StartService = institutionContract.ContractStartGr,
};
_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
}