101 lines
4.1 KiB
Go
101 lines
4.1 KiB
Go
package proto
|
|
|
|
import (
|
|
"reflect"
|
|
)
|
|
|
|
type EmployeeField string
|
|
|
|
const (
|
|
FieldEmpID EmployeeField = "EmpId"
|
|
FieldNamePrefix = "NamePrefix"
|
|
FieldFirstName = "FirstName"
|
|
FieldMiddleInitial = "MiddleInitial"
|
|
FieldLastName = "LastName"
|
|
FieldGender = "Gender"
|
|
FieldEmail = "Email"
|
|
FieldFathersName = "FathersName"
|
|
FieldMothersName = "MothersName"
|
|
FieldMothersMaidenName = "MothersMaidenName"
|
|
FieldBirthdate = "Birthdate"
|
|
FieldBirthTime = "BirthTime"
|
|
FieldWeightKg = "WeightKg"
|
|
FieldJoiningDate = "JoiningDate"
|
|
FieldJoiningQuarter = "JoiningQuarter"
|
|
FieldJoiningHalf = "JoiningHalf"
|
|
FieldJoiningYear = "JoiningYear"
|
|
FieldJoiningMonth = "JoiningMonth"
|
|
FieldJoiningMonthName = "JoiningMonthName"
|
|
FieldJoiningMonthNameShort = "JoiningMonthNameShort"
|
|
FieldJoiningMonthDay = "JoiningMonthDay"
|
|
FieldJoiningWeekDay = "JoiningWeekDay"
|
|
FieldJoiningWeekDayShort = "JoiningWeekDayShort"
|
|
FieldYearsOfService = "YearsOfService"
|
|
FieldSalary = "Salary"
|
|
FieldLatestHikePercentage = "LatestHikePercentage"
|
|
FieldSsn = "Ssn"
|
|
FieldPhoneNumber = "PhoneNumber"
|
|
FieldPlaceName = "PlaceName"
|
|
FieldCounty = "County"
|
|
FieldCity = "City"
|
|
FieldState = "State"
|
|
FieldZip = "Zip"
|
|
FieldRegion = "Region"
|
|
FieldUsername = "Username"
|
|
FieldPassword = "Password"
|
|
)
|
|
|
|
func (e *Employee) Copy() Employee {
|
|
return Employee{
|
|
EmpId: e.GetEmpId(),
|
|
NamePrefix: e.GetNamePrefix(),
|
|
FirstName: e.GetFirstName(),
|
|
MiddleInitial: e.GetMiddleInitial(),
|
|
LastName: e.GetLastName(),
|
|
Gender: e.GetGender(),
|
|
Email: e.GetEmail(),
|
|
FathersName: e.GetFathersName(),
|
|
MothersName: e.GetMothersName(),
|
|
MothersMaidenName: e.GetMothersMaidenName(),
|
|
Birthdate: e.GetBirthdate(),
|
|
BirthTime: e.GetBirthTime(),
|
|
WeightKg: e.GetWeightKg(),
|
|
JoiningDate: e.GetJoiningDate(),
|
|
JoiningQuarter: e.GetJoiningQuarter(),
|
|
JoiningHalf: e.GetJoiningHalf(),
|
|
JoiningYear: e.GetJoiningYear(),
|
|
JoiningMonth: e.GetJoiningMonth(),
|
|
JoiningMonthName: e.GetJoiningMonthName(),
|
|
JoiningMonthNameShort: e.GetJoiningMonthNameShort(),
|
|
JoiningMonthDay: e.GetJoiningMonthDay(),
|
|
JoiningWeekDay: e.GetJoiningWeekDay(),
|
|
JoiningWeekDayShort: e.GetJoiningWeekDayShort(),
|
|
YearsOfService: e.GetYearsOfService(),
|
|
Salary: e.GetSalary(),
|
|
LatestHikePercentage: e.GetLatestHikePercentage(),
|
|
Ssn: e.GetSsn(),
|
|
PhoneNumber: e.GetPhoneNumber(),
|
|
PlaceName: e.GetPlaceName(),
|
|
County: e.GetCounty(),
|
|
City: e.GetCity(),
|
|
State: e.GetState(),
|
|
Zip: e.GetZip(),
|
|
Region: e.GetRegion(),
|
|
Username: e.GetUsername(),
|
|
Password: e.GetPassword(),
|
|
}
|
|
}
|
|
|
|
func (el *EmployeeList) QueryEmployeesByColumn(column EmployeeField, query string) ([]*Employee, error) {
|
|
employees := make([]*Employee, 0)
|
|
|
|
for _, employee := range el.GetEmployees() {
|
|
value := reflect.ValueOf(employee).Elem().FieldByName(string(column))
|
|
if value.String() == query {
|
|
employees = append(employees, employee)
|
|
}
|
|
}
|
|
|
|
return employees, nil
|
|
}
|