Esempio n. 1
0
 public MandatoryInsuranceAddResponse AddMandatoryInsurance(MandatoryInsuranceAddRequest request)
 {
     MandatoryInsuranceAddResponse response = new MandatoryInsuranceAddResponse();
     Employee emp = employeeRepository.GetById(request.EmployeeId);
     if (emp != null)
     {
         double rateCompanyInsurance = emp.Company.CompanyInsuranceRatePercent;
         double rateLabaratorInsurance = emp.Company.LabaratorInsuranceRatePercent;
         double valuePositionInsurance = emp.Position.InsuranceRate;
         double companyValue = rateCompanyInsurance * valuePositionInsurance;
         double labaratorValue = rateLabaratorInsurance * valuePositionInsurance;
         emp.MadatoryInsurance = companyValue;
         emp.MadotoryInsuranceDate = request.DateOfIssue;
         Insurance insertedInsurance ;
         if (!request.IsDefined)
         {
             insertedInsurance = new Insurance()
             {
                 InsuranceNo = request.InssuranceNo,
                 DateOfIssue = request.DateOfIssue,
                 IsMandatory = true,
                 IsHistory = false,
                 CompanyRatePercent = rateCompanyInsurance,
                 LabaratorRatePercent = rateLabaratorInsurance,
                 Values = labaratorValue,
                 CompanyValue = companyValue,
                 Amount = valuePositionInsurance,
                 CreatedDate = DateTime.Now,
                 UpdatedDate = DateTime.Now,
                 EmployeeId = request.EmployeeId
             };
         }
         else {
             insertedInsurance = new Insurance()
             {
                InsuranceNo = request.InssuranceNo,
                 DateOfIssue = request.DateOfIssue,
                 IsMandatory = true,
                 IsHistory = false,
                 CompanyRatePercent = rateCompanyInsurance,
                 LabaratorRatePercent = rateLabaratorInsurance,
                 Values = rateLabaratorInsurance * request.Amount,
                 CompanyValue = rateCompanyInsurance * request.Amount,
                 Amount = request.Amount,
                 CreatedDate = DateTime.Now,
                 UpdatedDate = DateTime.Now,
                 EmployeeId = request.EmployeeId
             };
         }
         try
         {
             insuranceRepository.Add(insertedInsurance);
             employeeRepository.Update(emp);
             SaveInsurance();
             response.Success = true;
             response.Message = insertedInsurance.Id.ToString();
         }
         catch (Exception ex)
         {
             response.Success = false;
             response.Message = ex.Message;
         }
     }
     else
     {
         response.Success = false;
         response.Message = "No Employee Id Exits";
     }
     return response;
 }
Esempio n. 2
0
        public CreateExperienceForEmployeeResponse CreateNewExperienceForEmployee(CreateExperienceForEmployeeRequest requets)
        {
            CreateExperienceForEmployeeResponse response = new CreateExperienceForEmployeeResponse();

            Employee employeeUpdated = requets.Employee;
            if (employeeUpdated.CompanyId == requets.NewCompanyId &&
                employeeUpdated.PositionId == requets.NewPositionId &&
                employeeUpdated.Departement == requets.NewDepartement)
            {
                response.Status = false;
                response.Message = "Không thay đổi";
            }
            else
            {
                // create new exp
                Experience experience = new Experience() {
                    OldCompanyName = employeeUpdated.Company.CompanyName,
                    OldPositionName = employeeUpdated.Position.PositionName,
                    OldDepartement = employeeUpdated.Departement,
                    PositionId = employeeUpdated.PositionId,
                    OldJoinedDate = employeeUpdated.JoinedDate,
                    TransferDate = requets.TransferDate,
                    ExperienceYears = employeeUpdated.WorkingTimeSpan,
                    OldSalary = employeeUpdated.Salary,
                    OldInsurance = employeeUpdated.MadatoryInsurance,
                    Reason = requets.Reason,
                    AttachFile = requets.AttachFile,
                    EmployeeId = employeeUpdated.Id,
                    CompanyId = employeeUpdated.CompanyId,
                };
                // Make all insurance is history
                IEnumerable<Insurance> insuranceList = insuranceRepository.GetMany(ins => ins.EmployeeId == employeeUpdated.Id);
                foreach (Insurance ins in insuranceList)
                {
                    ins.IsHistory = true;
                    ins.HistoryCompanyName = employeeUpdated.Company.CompanyName;
                    ins.HistoryPositionName = employeeUpdated.Position.PositionName;
                }
                // update new employee infor
                employeeUpdated.JoinedDate = requets.TransferDate;
                employeeUpdated.CompanyId = requets.NewCompanyId;
                employeeUpdated.PositionId = requets.NewPositionId;
                employeeUpdated.Salary = requets.NewSalary;
                employeeUpdated.Departement = requets.NewDepartement;
                employeeUpdated.Status = Model.Enums.EmployeeStatus.Transfer;
                //
                if (employeeUpdated.GetMainSalaryComponent() != null)
                {
                    employeeUpdated.GetMainSalaryComponent().StartApplyDate = requets.TransferDate;
                    employeeUpdated.GetMainSalaryComponent().Amount = requets.NewSalary;
                }
                else
                {
                    EmployeeSalaryComponents empSalaryComponet = new EmployeeSalaryComponents()
                    {
                        SalaryComponentName = "Lương cơ bản",
                        IsSalary = true,
                        IsExtra = true,
                        IsMainSalary = true,
                        StartApplyDate = requets.TransferDate,
                        SalaryPayFrequency = SalaryPayFerequency.Monthly,
                        EndApplyDate = DateTime.MaxValue,
                        Amount = requets.NewSalary,
                        EmployeeId = employeeUpdated.Id,
                    };
                    employeeUpdated.EmployeeSalaryComponents.Add(empSalaryComponet);
                }
                // Check if have tranfer insurance
                if (requets.IsInsuranceTransfer)
                {
                    double postionInsuranceRate = positionRepository.GetById(requets.NewPositionId).InsuranceRate;
                    double companyInsuranceRate = companyRepository.GetById(requets.NewCompanyId).CompanyInsuranceRatePercent;
                    double labratorInsuranceRate = companyRepository.GetById(requets.NewCompanyId).LabaratorInsuranceRatePercent;
                    string insuranceNo = string.Format("BH/{0}/T/{1}", employeeUpdated.EmployeeCode,requets.InsuranceApplyDate.ToShortDateString());
                    Insurance ins;
                    if (requets.InsuranceTransferAmount != 0)
                    {
                        ins = new Insurance()
                        {
                            DateOfIssue = requets.InsuranceApplyDate,
                            Amount = requets.InsuranceTransferAmount,
                            Values = requets.InsuranceTransferAmount * labratorInsuranceRate,
                            CompanyValue = companyInsuranceRate * requets.InsuranceTransferAmount,
                            CompanyRatePercent = companyInsuranceRate,
                            LabaratorRatePercent = labratorInsuranceRate,
                            IsMandatory = true,
                            IsHistory = false,
                            EmployeeId = employeeUpdated.Id,
                            InsuranceNo = insuranceNo
                        };
                    }
                    else {
                        ins = new Insurance()
                        {
                            DateOfIssue = requets.InsuranceApplyDate,
                            Amount = employeeUpdated.Position.InsuranceRate,
                            CompanyRatePercent = companyInsuranceRate,
                            LabaratorRatePercent = labratorInsuranceRate,
                            Values = postionInsuranceRate * labratorInsuranceRate,
                            CompanyValue = companyInsuranceRate * postionInsuranceRate,
                            IsMandatory = true,
                            IsHistory = false,
                            EmployeeId = employeeUpdated.Id,
                            InsuranceNo = insuranceNo
                        };
                    }
                    insuranceRepository.Add(ins);
                }

                try
                {
                    employeeRepository.Update(employeeUpdated);
                    experienceRepository.Add(experience);
                    SaveExperience();
                    response.Status = true;
                    response.Message = experience.Id.ToString();
                }
                catch (Exception ex)
                {
                    response.Status = false;
                    response.Message = "System error";
                }
            }
            return response;
        }
Esempio n. 3
0
 public VoluntaryInsuranceAddResponse AddVoluntaryInsurance(VoluntaryInsuranceAddRequest request)
 {
     VoluntaryInsuranceAddResponse response = new VoluntaryInsuranceAddResponse();
     Insurance insertedInsurance = new Insurance()
     {
         InsuranceNo = request.InssuranceNo,
         DateOfIssue = request.DateOfIssue,
         IsMandatory = false,
         Values = request.Amount,
         CreatedDate = DateTime.Now,
         UpdatedDate = DateTime.Now,
         EmployeeId = request.EmployeeId,
         AttachFile = request.AttachFile
     };
     try
     {
         insuranceRepository.Add(insertedInsurance);
         SaveInsurance();
         response.Success = true;
         response.Message = insertedInsurance.Id.ToString();
     }
     catch (Exception ex)
     {
         response.Success = false;
         response.Message = ex.Message;
     }
     return response;
 }