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

225 lines
9.2 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 _0_Framework.Application;
using _0_Framework.Application.Enums;
using Company.Domain.ClassificationSchemeAgg;
using CompanyManagment.App.Contracts.ClassificationScheme;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.Application;
public class ClassificationSchemeApplication : IClassificationSchemeApplication
{
private readonly IClassificationSchemeRepository _classificationSchemeRepository;
private readonly IClassificationGroupRepository _classificationGroupRepository;
private readonly IClassificationGroupSalariesRepository _classificationGroupSalariesRepository;
private readonly IClassificationRialCoefficientRepository _classificationRialCoefficientRepository;
public ClassificationSchemeApplication(IClassificationSchemeRepository classificationSchemeRepository, IClassificationGroupRepository classificationGroupRepository, IClassificationGroupSalariesRepository classificationGroupSalariesRepository, IClassificationRialCoefficientRepository classificationRialCoefficientRepository)
{
_classificationSchemeRepository = classificationSchemeRepository;
_classificationGroupRepository = classificationGroupRepository;
_classificationGroupSalariesRepository = classificationGroupSalariesRepository;
_classificationRialCoefficientRepository = classificationRialCoefficientRepository;
}
public Task<ClassificationSchemePartialModel> ClassificationSchemePartialModel(long workshopId)
{
return _classificationSchemeRepository.ClassificationSchemePartialModel(workshopId);
}
public async Task<OperationResult> CreateClassificationScheme(CreateClassificationScheme command)
{
var op = new OperationResult();
try
{
command.ExecutionDateGr = command.ExecutionDateFa.ToGeorgianDateTime();
command.IncludingDateGr = command.IncludingDateFa.ToGeorgianDateTime();
}
catch (Exception e)
{
return op.Failed("تاریخ به درستی وارد نشده است");
}
#region Validation
#endregion
//ایجاد طرح
var create = new ClassificationScheme(command.IncludingDateGr, command.ExecutionDateGr,
command.DesignerFullName, command.DesignerPhone, command.WorkshopId, command.TypeOfCoefficient);
_classificationSchemeRepository.Create(create);
await _classificationSchemeRepository.SaveChangesAsync();
//ایجاد گروه های طرح
var groups = new List<ClassificationGroup>()
{
new ClassificationGroup("1",command.WorkshopId,create.id),
new ClassificationGroup("2",command.WorkshopId,create.id),
new ClassificationGroup("3",command.WorkshopId,create.id),
new ClassificationGroup("4",command.WorkshopId,create.id),
new ClassificationGroup("5",command.WorkshopId,create.id),
new ClassificationGroup("6",command.WorkshopId,create.id),
new ClassificationGroup("7",command.WorkshopId,create.id),
new ClassificationGroup("8",command.WorkshopId,create.id),
new ClassificationGroup("9",command.WorkshopId,create.id),
new ClassificationGroup("10",command.WorkshopId,create.id),
new ClassificationGroup("11",command.WorkshopId,create.id),
new ClassificationGroup("12",command.WorkshopId,create.id),
new ClassificationGroup("13",command.WorkshopId,create.id),
new ClassificationGroup("14",command.WorkshopId,create.id),
new ClassificationGroup("15",command.WorkshopId,create.id),
new ClassificationGroup("16",command.WorkshopId,create.id),
new ClassificationGroup("17",command.WorkshopId,create.id),
new ClassificationGroup("18",command.WorkshopId,create.id),
new ClassificationGroup("19",command.WorkshopId,create.id),
new ClassificationGroup("20",command.WorkshopId,create.id),
};
await _classificationGroupRepository.CreateGroups(groups);
return op.Succcedded();
}
public Task<EditClassificationScheme> GetClassificationScheme(long id)
{
return _classificationSchemeRepository.GetClassificationScheme(id);
}
public async Task<OperationResult> EditClassificationScheme(EditClassificationScheme command)
{
var op = new OperationResult();
try
{
command.ExecutionDateGr = command.ExecutionDateFa.ToGeorgianDateTime();
command.IncludingDateGr = command.IncludingDateFa.ToGeorgianDateTime();
}
catch (Exception e)
{
return op.Failed("تاریخ به درستی وارد نشده است");
}
#region Validation
#endregion
var scheme = _classificationSchemeRepository.Get(command.Id);
if (scheme == null)
return op.Failed("رکورد مورد نظر وجود ندارد");
scheme.Edit(command.IncludingDateGr,command.ExecutionDateGr,command.DesignerFullName,command.DesignerPhone,command.TypeOfCoefficient);
await _classificationSchemeRepository.SaveChangesAsync();
return op.Succcedded();
}
public async Task<List<ClassificationGroupAndJobModel>> GetGroupAndJobs(long schemeId)
{
return await _classificationGroupRepository.GetGroupAndJobs(schemeId);
}
public async Task<List<EditClassificationGroupJob>> GetGroupJobs(long groupId)
{
return await _classificationGroupRepository.GetGroupJobs(groupId);
}
public async Task<bool> CheckEmployeeHasThisJob(long id, long groupId)
{
return await _classificationGroupRepository.CheckEmployeeHasThisJob(id, groupId);
}
public async Task<bool> CreateGroupJobs(List<CreateClassificationGroupJob> createClassificationGroupJob, List<long> deleteJobList)
{
var newJoblist = new List<ClassificationGroupJob>();
if (createClassificationGroupJob.Count > 0)
{
foreach (var item in createClassificationGroupJob)
{
var newJob = new ClassificationGroupJob(item.JobId, item.JobName, item.JobCode, item.ClassificationGroupId,
item.GroupNo);
newJoblist.Add(newJob);
}
}
return await _classificationGroupRepository.CreateJobs(newJoblist, deleteJobList);
}
public async Task<SalaryAndRialCoefficientTab> GetSalariesTabData(long schemeId)
{
return await _classificationGroupSalariesRepository.GetSalariesTabData(schemeId);
}
public async Task<SalaryAndRialCoefficientModel> GetGroupToCreateSalariesModal(long schemeId)
{
return await _classificationGroupRepository.GetGroupToCreateSalariesModal(schemeId);
}
public async Task<OperationResult> CreateGroupSalaryAndCoefficient(SalaryAndRialCoefficientModel command)
{
var op = new OperationResult();
#region Validation
if (string.IsNullOrWhiteSpace(command.StartDateFa) || string.IsNullOrWhiteSpace(command.StartDateFa))
return op.Failed("تاریخ شروع و پایان نمی توانند خالی باشند");
if (command.TypeOfCoefficient == TypeOfCoefficient.RialCoefficient && string.IsNullOrWhiteSpace(command.RialCoefficientStr))
return op.Failed("ضریب ریالی وارد نشده است");
if (command.SalariesAndCoefficientList.Any(x=> string.IsNullOrWhiteSpace(x.GroupSalaryStr)))
return op.Failed("دستمزد تمامی گروه ها می بایست تعیین شود");
#endregion
try
{
command.StartDate = command.StartDateFa.ToGeorgianDateTime();
command.EndDate = command.EndDateFa.ToGeorgianDateTime();
}
catch (Exception e)
{
return op.Failed("فرمت تاریخ اشتباه است");
}
var year = Convert.ToInt32(command.StartDateFa.Substring(0, 4));
var createSalaries = new List<ClassificationGroupSalary>();
foreach (var item in command.SalariesAndCoefficientList)
{
item.GroupSalary = item.GroupSalaryStr.MoneyToDouble();
var create = new ClassificationGroupSalary(item.ClassificationGroupId,item.GroupNo,item.GroupSalary,command.StartDate,command.EndDate, year);
createSalaries.Add(create);
}
await _classificationGroupSalariesRepository.CreateSalaries(createSalaries);
if (command.TypeOfCoefficient == TypeOfCoefficient.RialCoefficient)
{
try
{
command.RialCoefficient = command.RialCoefficientStr.MoneyToDouble();
await _classificationRialCoefficientRepository.CreateAsync(new ClassificationRialCoefficient(command.SchemeId,
command.RialCoefficient, command.StartDate, command.EndDate, year));
await _classificationRialCoefficientRepository.SaveChangesAsync();
}
catch (Exception e)
{
return op.Failed("فرمت مبلغ ضریب ریالی اشتباه است");
}
}
op.SendId = command.SchemeId;
return op.Succcedded();
}
}