Пример #1
0
        public Guid Save(Employee employee)
        {
            Transaction tx = null;

            try
            {
                using (var em = EntityManagerFactory.CreateInstance(ds))
                {
                    tx = em.BeginTransaction();

                    Guid ID = Guid.NewGuid();

                    string[] columns = { "ID",          "EmployeeCode",    "OldEmployeeCode", "EmployeeName",   "BirthPlace",  "BirthDate", "Gender", "Religion", "IsTransfer",
                                         "BankName",    "AccountNumber",   "MaritalStatus",   "NumberOfChilds", "IsInsurance", "IsTax",     "NPWP",   "PTKPId",
                                         "IsPrincipal", "IsFuelAllowance", "StartDate",       "EndDate",        "IsActive",
                                         "CreatedDate", "CreatedBy",       "ModifiedDate",    "ModifiedBy" };

                    object[] values = { ID,                                   employee.EmployeeCode,            employee.OldEmployeeCode,             employee.EmployeeName,                  employee.BirthPlace,    employee.BirthDate.ToShortDateString(),
                                        employee.Gender == true?1:0,          employee.Religion,                employee.IsTransfer == true?1:0,      employee.BankName,                      employee.AccountNumber,
                                        employee.MaritalStatus == true?1:0,   employee.NumberOfChilds,          employee.IsInsurance == true?1:0,     employee.IsTax == true?1:0,             employee.NPWP,
                                        employee.PTKPId,                      employee.IsPrincipal == true?1:0, employee.IsFuelAllowance == true?1:0, employee.StartDate.ToShortDateString(),
                                        employee.EndDate.ToShortDateString(), employee.IsActive == true?1:0,
                                        DateTime.Now.ToShortDateString(),     Store.ActiveUser,                 DateTime.Now.ToShortDateString(),     Store.ActiveUser };

                    var q = new Query().Select(columns).From(tableName).Insert(values);

                    em.ExecuteNonQuery(q.ToSql(), tx);

                    foreach (var family in employee.Families)
                    {
                        family.EmployeeId = ID;
                        employeeFamilyRepository.Save(em, tx, family);
                    }

                    foreach (var department in employee.Departments)
                    {
                        department.EmployeeId = ID;
                        employeeDepatmentRepository.Save(em, tx, department);
                    }

                    foreach (var grade in employee.Grades)
                    {
                        grade.EmployeeId = ID;
                        employeeGradeRepository.Save(em, tx, grade);
                    }

                    foreach (var occupation in employee.Occupations)
                    {
                        occupation.EmployeeId = ID;
                        employeeOccupationRepository.Save(em, tx, occupation);
                    }

                    foreach (var principal in employee.Principals)
                    {
                        principal.EmployeeId = ID;
                        employeePrincipalRepository.Save(em, tx, principal);
                    }

                    foreach (var employeeStatus in employee.Status)
                    {
                        employeeStatus.EmployeeId = ID;
                        employeeStatusRepository.Save(em, tx, employeeStatus);
                    }

                    foreach (var employeeInsurance in employee.Insurances)
                    {
                        employeeInsurance.EmployeeId = ID;
                        employeeInsuranceRepository.Save(em, tx, employeeInsurance);
                    }


                    foreach (var employeeSalary in employee.Salaries)
                    {
                        employeeSalary.EmployeeId = ID;
                        employeeSalaryRepository.Save(em, tx, employeeSalary);
                    }


                    branchRepository.UpdateEmployeeCounter(employee.CurrentInfo.BranchName, em, tx);

                    tx.Commit();



                    return(ID);
                }
            }
            catch (Exception ex)
            {
                tx.Rollback();
                throw ex;
            }
        }