engineering contributions are in a much better, simpler place.

master
dtookey 4 years ago
parent accade8dff
commit 7be29424a9

@ -17,7 +17,7 @@ const (
projectEndpoint = "" projectEndpoint = ""
projectListEndpoint = "project/list?ids=" projectListEndpoint = "project/list?ids="
timeEntryForUserInRangeEndpoint = "time-entry/user-date-range?startDate=2020-01-01&endDate=%s&userId=%s" timeEntryForUserInRangeEndpoint = "time-entry/user-date-range?modelProperties=ActualHours,Date,Description,Project_Id,Task_Id,TimeSheet_Id,User_Id&startDate=2020-01-01&endDate=%s&userId=%s"
userEndpoint = "user/list-active?modelProperties=Id,FirstName,LastName,EmailAddress" userEndpoint = "user/list-active?modelProperties=Id,FirstName,LastName,EmailAddress"
) )
@ -80,18 +80,9 @@ type (
TimeEntry struct { TimeEntry struct {
ActualHours float64 ActualHours float64
ActualHoursFormattedString string
ActualTimeString string
ActualTotal float64
BillableHours float64
BillableHoursFormattedString string
BillableTimeString string
BillableTotal float64
TimeEntryDate string `json:"Date,omitempty"` TimeEntryDate string `json:"Date,omitempty"`
TimeEntryDescription string `json:"Description,omitempty"` TimeEntryDescription string `json:"Description,omitempty"`
ProjectId string `json:"Project_Id,omitempty"` ProjectId string `json:"Project_Id,omitempty"`
RateBill float64
RateBurden float64
TaskId string `json:"Task_Id,omitempty"` TaskId string `json:"Task_Id,omitempty"`
TimeSheetId string `json:"TimeSheet_Id,omitempty"` TimeSheetId string `json:"TimeSheet_Id,omitempty"`
UserId string `json:"User_Id,omitempty"` UserId string `json:"User_Id,omitempty"`
@ -128,11 +119,21 @@ func (ic *Interconnect) UpdateUsers() {
func (ic *Interconnect) UpdateTimeEntries() { func (ic *Interconnect) UpdateTimeEntries() {
users := ic.DBConnector.FetchEngineerUsers() users := ic.DBConnector.FetchEngineerUsers()
entryChan := make(chan *[]*TimeEntry)
coroutineCount := 0
for _, userPtr := range *users { for _, userPtr := range *users {
user := *userPtr go ic.Client.GetTimeAllTimeEntriesForUserThroughDate(userPtr.Id, "2022-04-28", entryChan)
entries := ic.Client.GetTimeAllTimeEntriesForUserThroughDate(user.Id, "2022-04-28") coroutineCount++
}
log.Printf("Currently working goroutines: %d\n", coroutineCount)
for coroutineCount > 0 {
entries := <-entryChan
ic.DBConnector.UpdateTimeEntries(entries) ic.DBConnector.UpdateTimeEntries(entries)
coroutineCount--
log.Printf("Currently working goroutines: %d\n", coroutineCount)
} }
ic.DBConnector.ExecuteSqlScript("insight", "create-insight-contribution-table.sql")
} }
//</editor-fold> //</editor-fold>
@ -151,7 +152,7 @@ func NewIClient() *IClient {
return &c return &c
} }
func (iClient *IClient) GetTimeAllTimeEntriesForUserThroughDate(userId string, endDate string) *[]*TimeEntry { func (iClient *IClient) GetTimeAllTimeEntriesForUserThroughDate(userId string, endDate string, returnChan chan<- *[]*TimeEntry) {
urlString := fmt.Sprintf(timeEntryForUserInRangeEndpoint, endDate, userId) urlString := fmt.Sprintf(timeEntryForUserInRangeEndpoint, endDate, userId)
log.Println(urlString) log.Println(urlString)
req := iClient.createRequest(urlString, insightTokenFile) req := iClient.createRequest(urlString, insightTokenFile)
@ -161,7 +162,7 @@ func (iClient *IClient) GetTimeAllTimeEntriesForUserThroughDate(userId string, e
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
return &container returnChan <- &container
} }
func (iClient *IClient) GetProjectsInList(projectIds []string) *[]Project { func (iClient *IClient) GetProjectsInList(projectIds []string) *[]Project {

@ -44,18 +44,9 @@ func (c *DBConnector) UpdateTimeEntries(entries *[]*TimeEntry) {
} }
for _, ent := range *entries { for _, ent := range *entries {
_, err = s.Exec(ent.ActualHours, _, err = s.Exec(ent.ActualHours,
ent.ActualHoursFormattedString,
ent.ActualTimeString,
ent.ActualTotal,
ent.BillableHours,
ent.BillableHoursFormattedString,
ent.BillableTimeString,
ent.BillableTotal,
ent.TimeEntryDate, ent.TimeEntryDate,
ent.TimeEntryDescription, ent.TimeEntryDescription,
ent.ProjectId, ent.ProjectId,
ent.RateBill,
ent.RateBurden,
ent.TaskId, ent.TaskId,
ent.TimeSheetId, ent.TimeSheetId,
ent.UserId) ent.UserId)

@ -1,7 +1,6 @@
package main package main
import ( import (
"fmt"
"log" "log"
"mercury/src/insight" "mercury/src/insight"
"mercury/src/mercury" "mercury/src/mercury"
@ -12,6 +11,9 @@ import (
func main() { func main() {
s := time.Now() s := time.Now()
//icx := insight.NewInsightConnect()
//icx.DBConnector.ExecuteSqlScript("insight", "create-insight-contribution-table.sql")
//processQbBilling() //processQbBilling()
test() test()
//fetchInsightData() //fetchInsightData()
@ -36,20 +38,3 @@ func processQbBilling() {
mercury.ProcessTrialBalances(reportBase, "./test.csv") mercury.ProcessTrialBalances(reportBase, "./test.csv")
} }
func fetchInsightData() {
//jcrouch id = e779e0a9-0e56-4dbe-98dd-e8d0048d109f
//id := "e779e0a9-0e56-4dbe-98dd-e8d0048d109f"
client := insight.NewIClient()
users := client.GetUsers()
for _, user := range *users {
if user.EmailAddress == "jcrouch@jdsconsulting.net" {
fmt.Println(user.EmailAddress)
timeEntries := client.GetTimeAllTimeEntriesForUserThroughDate(user.Id, "2022-04-22")
for _, entry := range *timeEntries {
fmt.Printf("%#v\n", entry)
}
}
}
}

@ -0,0 +1,14 @@
DROP TABLE IF EXISTS insight_engineering_contributions;
CREATE TABLE insight_engineering_contributions AS
SELECT email,
CONCAT(insight.users.LastName, ', ', insight.users.FirstName) as Engineer,
ProjectId,
ActualHours,
TimeEntryDate,
TimeEntryDescription
FROM projects.users
INNER JOIN insight.users ON projects.users.email = insight.users.EmailAddress
INNER JOIN insight.timeentry ON insight.users.Id = insight.timeentry.UserId
WHERE projects.users.priv & POW(2, 25) > 0
;

@ -3,18 +3,9 @@ DROP TABLE IF EXISTS insight.timeentry;
CREATE TABLE insight.timeentry CREATE TABLE insight.timeentry
( (
ActualHours REAL, ActualHours REAL,
ActualHoursFormattedString varchar(30),
ActualTimeString VARCHAR(30),
ActualTotal REAL,
BillableHours REAL,
BillableHoursFormattedString VARCHAR(30),
BillableTimeString VARCHAR(30),
BillableTotal REAL,
TimeEntryDate VARCHAR(30), TimeEntryDate VARCHAR(30),
TimeEntryDescription VARCHAR(4096), TimeEntryDescription VARCHAR(4096),
ProjectId VARCHAR(50), ProjectId VARCHAR(50),
RateBill REAL,
RateBurden REAL,
TaskId VARCHAR(50), TaskId VARCHAR(50),
TimeSheetId VARCHAR(50), TimeSheetId VARCHAR(50),
UserId VARCHAR(50) UserId VARCHAR(50)

@ -1,17 +1,8 @@
INSERT INTO insight.timeentry (ActualHours, INSERT INTO insight.timeentry (ActualHours,
ActualHoursFormattedString,
ActualTimeString,
ActualTotal,
BillableHours,
BillableHoursFormattedString,
BillableTimeString,
BillableTotal,
TimeEntryDate, TimeEntryDate,
TimeEntryDescription, TimeEntryDescription,
ProjectId, ProjectId,
RateBill,
RateBurden,
TaskId, TaskId,
TimeSheetId, TimeSheetId,
UserId) UserId)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); VALUES (?, ?, ?, ?, ?, ?, ?);
Loading…
Cancel
Save