public void Save(Employee e, HourlyPayCalculator c) { var cmd = _connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = " UPDATE Employees SET" + " PayCalculatorType = @PayCalculatorType," + " HourlySalary = @HourlySalary" + " WHERE Id = @Id;"; cmd.Parameters.Add(new SqlParameter("PayCalculatorType", c.GetType().Name)); cmd.Parameters.Add(new SqlParameter("HourlySalary", c.HourlySalary)); cmd.Parameters.Add(new SqlParameter("Id", e.Id)); cmd.ExecuteNonQuery(); foreach (var s in c.Hours) { var schedulationCmd = _connection.CreateCommand(); schedulationCmd.CommandType = CommandType.Text; schedulationCmd.CommandText = " INSERT INTO Schedulations" + " (EmployeeId,Date,WorkedHours)" + " VALUES" + " (@EmployeeId, @Date,@WorkedHours);"; schedulationCmd.Parameters.Add(new SqlParameter("EmployeeId", e.Id)); schedulationCmd.Parameters.Add(new SqlParameter("Date", s.Key)); schedulationCmd.Parameters.Add(new SqlParameter("WorkedHours", s.Value)); schedulationCmd.ExecuteNonQuery(); } }
public List <Employee> FindAll() { _connection = new SqlConnection(_connectionString); _connection.Open(); var cmd = _connection.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM Employees"; var reader = cmd.ExecuteReader(); var list = new List <Employee>(); while (reader.Read()) { var e = new Employee(); e.Id = (int)reader["Id"]; e.Name = (string)reader["Name"]; e.TotalPay = (decimal)reader["TotalPay"]; e.BonusCalculator = createBonusCalculator((string)reader["BonusCalculatorType"]); var payType = (string)reader["PayCalculatorType"]; switch (payType) { case nameof(FixedPayCalculator): var fixedCalc = new FixedPayCalculator(); fixedCalc.MonthlySalary = (decimal)reader["MonthlySalary"]; break; case nameof(HourlyPayCalculator): var hourlyCalc = new HourlyPayCalculator(); hourlyCalc.HourlySalary = (decimal)reader["HourlySalary"]; // TODO: pesca le schedulations di questo employee. break; case nameof(CommissionPayCalculator): var commCalc = new CommissionPayCalculator(); commCalc.CommissionPercentage = (decimal)reader["CommissionPercentage"]; //TODO: pesca le Commissions di questo Employee break; case nameof(NullPayCalculator): break; default: throw new ArgumentException($"'{payType}' is not a known PayCalculator!"); } list.Add(e); } _connection.Close(); return(list); }