public EEmployeeUpdateResult CreateNewEmployee(out Employee aNewEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, int aManagerId) { Employee aManager = null; if (aManagerId > 0) { aManager = EmployeeListDB.Employees.Find(aManagerId); } return(CreateNewEmployee(out aNewEmployee, aUpdateOption, aSalaryPlanId, aLastName, aFirstName, aMiddleName, aEmploymentDate, aManager)); }
/// <summary> /// Updates Employee entity performing all necessary validations. /// </summary> /// <param name="aEmployee">Employee entity to update</param> /// <param name="aUpdateOption">Do nothing, Do SaveChanges</param> /// <param name="aSalaryPlanId">SalaryPlan Id, if <= 0 then unchanged</param> /// <param name="aLastName">Last name, if null then unchanged</param> /// <param name="aFirstName">First name, if null then unchanged</param> /// <param name="aMiddleName">Middle name, if null then unchanged, if empty then set to null</param> /// <param name="aEmploymentDate">Employment date, if zero then unchanged</param> /// <param name="aManager">Manager entity, if null then set to null</param> /// <returns>Success, A required field is incorrect, EmployeeType is Employee but this Employee has subordinates, Manager is already this Employee's subordinate</returns> public EEmployeeUpdateResult UpdateEmployee(Employee aEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, Employee aManager) { if (aSalaryPlanId <= 0) { aSalaryPlanId = aEmployee.SalaryPlanId; } aLastName ??= aEmployee.LastName; aFirstName ??= aEmployee.FirstName; if (aMiddleName == null) { aMiddleName = aEmployee.MiddleName; } else if (aMiddleName.Length == 0) { aMiddleName = null; } if (aEmploymentDate.Ticks <= 0L) { aEmploymentDate = aEmployee.EmploymentDate; } EEmployeeUpdateResult res = EEmployeeUpdateResult.FailRequiredField; if ((aSalaryPlanId > 0) && !string.IsNullOrWhiteSpace(aLastName) && !string.IsNullOrWhiteSpace(aFirstName) && (aEmploymentDate >= CompanyDateOfEstablishment)) { SalaryPlan aSalaryPlan = EmployeeListDB.SalaryPlans.Find(aSalaryPlanId); if (aSalaryPlan != null) { res = EEmployeeUpdateResult.FailEmployeeType; if ((aSalaryPlan.EmployeeType > SalaryPlan.EEmployeeType.Employee) || (aEmployee.Subordinates == null) || !aEmployee.Subordinates.Any()) { res = EEmployeeUpdateResult.FailManagerIsSubordinate; if ((aManager == null) || !EmployeeHelper.IsSubordinate(aEmployee, aManager)) { aEmployee.LastName = aLastName; aEmployee.FirstName = aFirstName; aEmployee.MiddleName = aMiddleName; aEmployee.EmploymentDate = aEmploymentDate; aEmployee.SalaryPlanId = aSalaryPlanId; aEmployee.Manager = aManager; if (aUpdateOption == EEmployeeUpdateOption.SaveChanges) { EmployeeListDB.SaveChanges(); } res = EEmployeeUpdateResult.Success; } } } } return(res); }
/// <summary> /// Updates Employee entity performing all necessary validations. /// </summary> /// <param name="aEmployee">Employee entity to update</param> /// <param name="aUpdateOption">Do nothing, Do SaveChanges</param> /// <param name="aSalaryPlanId">SalaryPlan Id, if <= 0 then unchanged</param> /// <param name="aLastName">Last name, if null then unchanged</param> /// <param name="aFirstName">First name, if null then unchanged</param> /// <param name="aMiddleName">Middle name, if null then unchanged, if empty then set to null</param> /// <param name="aEmploymentDate">Employment date, if zero then unchanged</param> /// <param name="aManagerId">Manager Id, if <0 then unchanged, if 0 then set to null</param> /// <returns>Success, A required field is incorrect, EmployeeType is Employee but this Employee has subordinates, Manager is already this Employee's subordinate</returns> public EEmployeeUpdateResult UpdateEmployee(Employee aEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, int aManagerId = -1) { Employee aManager = null; if (aManagerId > 0) { aManager = EmployeeListDB.Employees.Find(aManagerId); } else if (aManagerId < 0) { aManager = aEmployee.Manager; } return(UpdateEmployee(aEmployee, aUpdateOption, aSalaryPlanId, aLastName, aFirstName, aMiddleName, aEmploymentDate, aManager)); }
/// <summary> /// Creates a new Employee entity performing all necessary validations. /// </summary> /// <param name="aNewEmployee">Newly created Employee</param> /// <param name="aUpdateOption">Do nothing, Add to table Employees, Add to table Employees and do SaveChanges</param> /// <param name="aSalaryPlanId">SalaryPlan Id</param> /// <param name="aLastName">Last name</param> /// <param name="aFirstName">First name</param> /// <param name="aMiddleName">Middle name</param> /// <param name="aEmploymentDate">Employment date</param> /// <param name="aManager">Manager entity</param> /// <returns>Success, A required field is incorrect, Employee with the same name already exists</returns> public EEmployeeUpdateResult CreateNewEmployee(out Employee aNewEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, Employee aManager = null) { EEmployeeUpdateResult res = EEmployeeUpdateResult.FailRequiredField; aNewEmployee = null; if ((aSalaryPlanId > 0) && !string.IsNullOrWhiteSpace(aLastName) && !string.IsNullOrWhiteSpace(aFirstName) && (aEmploymentDate >= CompanyDateOfEstablishment)) { SalaryPlan aSalaryPlan = EmployeeListDB.SalaryPlans.Find(aSalaryPlanId); if (aSalaryPlan != null) { res = EEmployeeUpdateResult.FailAlreadyExists; var aEmployee = new Employee { LastName = aLastName, FirstName = aFirstName, MiddleName = aMiddleName, EmploymentDate = aEmploymentDate, SalaryPlanId = aSalaryPlanId }; if (!EmployeeListDB.Employees.Any(v => v.Equals(aEmployee))) { aEmployee.Manager = aManager; aNewEmployee = aEmployee; if (aUpdateOption > EEmployeeUpdateOption.None) { EmployeeListDB.Employees.Add(aEmployee); if (aUpdateOption == EEmployeeUpdateOption.SaveChanges) { EmployeeListDB.SaveChanges(); } } res = EEmployeeUpdateResult.Success; } } } return(res); }
public EEmployeeUpdateResult UpdateEmployee(Employee aEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName = null) { return(UpdateEmployee(aEmployee, aUpdateOption, aSalaryPlanId, aLastName, aFirstName, aMiddleName, new DateTime(), aEmployee.Manager)); }
public EEmployeeUpdateResult CreateNewEmployee(out Employee aNewEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName = null) { return(CreateNewEmployee(out aNewEmployee, aUpdateOption, aSalaryPlanId, aLastName, aFirstName, aMiddleName, DateTime.Now)); }