public bool AddRecentTimeEntry(KronosTimeEntry kEntry) { using (p1p.Data.P1PContext ctx = new p1p.Data.P1PContext()) { try { p1p.Data.TimeEntry thisEntry = ConvertToTimeEntry(kEntry); if (thisEntry.StartTime < DateTime.Now.AddMonths(-1)) { return(true); } List <p1p.Data.TimeEntry> dupCheck = ctx.TimeEntries.Where(t => t.StartTime == thisEntry.StartTime && t.EndTime == thisEntry.EndTime && t.UserId.Equals(thisEntry.UserId)).ToList <p1p.Data.TimeEntry>(); if (dupCheck.Count > 0) { return(true); } else { thisEntry.InsertDate = DateTime.Now; ctx.TimeEntries.Add(thisEntry); ctx.SaveChanges(); return(true); } } catch (Exception ex) { log.Error("Failed to add Time Entry: " + ex.Message + ex.Message + kEntry.toJSON()); return(false); } } }
private p1p.Data.TimeEntry ConvertToTimeEntry(KronosTimeEntry kEntry) { p1p.Data.TimeEntry te = new p1p.Data.TimeEntry(); te.Activity = kEntry.Activity; if (!String.IsNullOrWhiteSpace(kEntry.Elapsed)) { TimeSpan elapsed = TimeSpan.MinValue; TimeSpan.TryParse(kEntry.Elapsed, out elapsed); if (elapsed != TimeSpan.MinValue) { te.Elapsed = elapsed; } } string dateStr = kEntry.Date.ToString("MM/dd/yyyy"); if (!String.IsNullOrWhiteSpace(kEntry.StartTime)) { kEntry.StartTime = kEntry.StartTime.ToUpper(); DateTime startTime; string startStr = dateStr + " " + kEntry.StartTime; DateTime.TryParseExact(startStr, "MM/dd/yyyy hh:mmt", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out startTime); te.StartTime = startTime; } if (!String.IsNullOrWhiteSpace(kEntry.EndTime)) { kEntry.EndTime = kEntry.EndTime.ToUpper(); DateTime endTime; string endStr = dateStr + " " + kEntry.EndTime; DateTime.TryParseExact(endStr, "MM/dd/yyyy hh:mmt", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out endTime); te.EndTime = endTime; } if (!String.IsNullOrWhiteSpace(kEntry.IsTimeOff)) { te.IsTimeOff = "y".Equals(kEntry.IsTimeOff.ToLower()); } te.Note = kEntry.Note; te.UserId = IdentityHelper.GetUserIdByName(kEntry.FirstName, kEntry.LastName); te.InsertDate = DateTime.Now; ProjectsRepository pRepo = new ProjectsRepository(); string[] team_project = kEntry.Project.Split('/'); if (team_project.Length > 0) { string team = team_project[0]; } string project = "Undefined"; if (team_project.Length > 1) { if (team_project.Length == 2) { project = team_project[1]; } else { project = team_project[2]; } } using (p1p.Data.P1PContext ctx = new p1p.Data.P1PContext()) { List <p1p.Data.Project> proj = ctx.Projects.Where(p => p.Name.Equals(project, StringComparison.OrdinalIgnoreCase)).ToList <p1p.Data.Project>(); if (proj.Count > 0) { te.ProjectId = proj[0].Id; } else { throw new Exception("Project named: " + project + " not found. Skipping this entry."); } return(te); } }