private string SerializeTimesheet(Timesheet.Timesheet ts) { using (MemoryStream memoryStream = new MemoryStream()) using (StreamReader reader = new StreamReader(memoryStream)) { DataContractSerializer serializer = new DataContractSerializer(ts.GetType()); serializer.WriteObject(memoryStream, ts); memoryStream.Position = 0; return(reader.ReadToEnd()); } }
public DataTable FlattenToDatatable(Timesheet.Timesheet ts) { DataTable dt = new DataTable(); DataRow row; dt.TableName = "Records"; DataColumn dateCol = new DataColumn(); dateCol.ColumnName = "Date"; DataColumn startCol = new DataColumn(); startCol.ColumnName = "Time Begin"; DataColumn endCol = new DataColumn(); endCol.ColumnName = "Time End"; DataColumn lunchCol = new DataColumn("Lunch", typeof(double)); DataColumn hourCol = new DataColumn(); hourCol.ColumnName = "Hours"; dt.Columns.Add(dateCol); dt.Columns.Add(startCol); dt.Columns.Add(endCol); dt.Columns.Add(lunchCol); dt.Columns.Add(hourCol); foreach (Timesheet.Day day in ts.days) { foreach (Timesheet.Hours hour in day.hours) { row = dt.NewRow(); string dateOnly = day.date.ToShortDateString(); row["Date"] = dateOnly; DateTime datestart = Convert.ToDateTime(hour.start); DateTime dateend = Convert.ToDateTime(hour.end); string strstart = datestart.ToShortTimeString(); string strend = dateend.ToShortTimeString(); row["Time Begin"] = strstart; row["Time End"] = strend; row["Lunch"] = (double)hour.lunch; row["Hours"] = hour.hours; dt.Rows.Add(row); } } return(dt); }
public ResponseData AddTimesheet(Timesheet.Timesheet tsPost) { TimesheetDS.EmployeeTimesheetsDataTable dt = new TimesheetDS.EmployeeTimesheetsDataTable(); TimesheetDSTableAdapters.EmployeeTimesheetsTableAdapter adapter = new TimesheetDSTableAdapters.EmployeeTimesheetsTableAdapter(); int id; bool IsFirstHalf = tsPost.quarter == 1 ? true : false; id = Convert.ToInt32(adapter.AddTimesheet(tsPost.employee.employeeToken, tsPost.month, tsPost.year, tsPost.totalhours, IsFirstHalf)); string TimesheetID = Convert.ToString(adapter.GetTimesheetID(id)); var response = new ResponseData { EmployeeToken = TimesheetID }; string TimesheetDayID; for (int i = 0; i < tsPost.days.Count(); i++) { id = Convert.ToInt32(adapter.AddTimesheetDay(Guid.Parse(TimesheetID), tsPost.days[i].date, tsPost.days[i].description.ToString())); TimesheetDayID = Convert.ToString(adapter.GetTimesheetDayID(id)); for (int x = 0; x < tsPost.days[0].hours.Count(); x++) { adapter.AddTimesheetHours(Guid.Parse(TimesheetDayID), Convert.ToDateTime(tsPost.days[i].hours[x].start), Convert.ToDateTime(tsPost.days[i].hours[x].end), (double)tsPost.days[i].hours[x].hours, (double)tsPost.days[i].hours[x].lunch); } } // Send Excel to Google Drive GoogleSheets _gs = new GoogleSheets(tsPost); //string monthName = new DateTime(tsPost.year, tsPost.month, 1).ToString("MMM", CultureInfo.InvariantCulture); //string empName = tsPost.employee.lastname.ToString() + ", " + tsPost.employee.lastname.ToString(); //string body = "Timesheet for " + tsPost.employee.lastname.ToString() + ", " + tsPost.employee.firstname.ToString() + " - " + monthName + " " + tsPost.year.ToString() + " " + "Period: " + tsPost.quarter.ToString(); //GoogleSheets _gs = new GoogleSheets(tsPost); //string fileTitle = _gs.fileTitle; //byte[] byteArray = System.IO.File.ReadAllBytes(@"C:\Users\Administrator\Desktop\Timesheet\TimesheetService_Deploy\bin\" + fileTitle + ".xls"); //MailAttachment attach = new MailAttachment(byteArray, fileTitle+".xls"); return(response); }
private void _btnSubmitTimesheet_Click(object sender, EventArgs e) { string NewTimesheetID; List <Timesheet.Timesheet> tsList = new List <Timesheet.Timesheet>(); Timesheet.Timesheet ts = new Timesheet.Timesheet(); ts = _dtNewTimesheet_Formatted.ToTimesheet(); string xml = SerializeTimesheet(ts); SubmitPOST post = new SubmitPOST(xml, _urlAddTimesheet); NewTimesheetID = post.Response[0]; if (NewTimesheetID != null) { _listviewTimesheets.Items.Clear(); InitiateConsole(true); LoadTimesheets(); MenuStrip_LoadTimesheetMenuItems(); } }
// View Timesheet functionality private void InitiateViewTimesheet(int index) { if (_pnlAddTimesheet.Visible) { _pnlAddTimesheet.Visible = false; } if (_pnlCC.Visible) { _pnlCC.Visible = false; } _pnlViewTimesheet.Visible = true; Timesheet.Timesheet ts = _tsList[index]; string monthName = new DateTime(ts.year, ts.month, 1).ToString("MMM", CultureInfo.InvariantCulture); _lbl_ViewTimesheet_TotalHours.Text = ts.totalhours + "hrs."; int inc = 0; int dayInt = 0; DateTime minDate = new DateTime(); DateTime maxDate = new DateTime(); foreach (Timesheet.Day day in ts.days) { dayInt = Convert.ToInt32(day.date.Day); if (inc == 0) { minDate = day.date; } if (dayInt > maxDate.Day) { maxDate = day.date.Date; } inc++; } _dt_ViewTimesheet_From.Value = minDate; _dt_ViewTimesheet_To.Value = maxDate; DataTable dt = FlattenToDatatable(ts); _gridTimesheet.DataSource = dt; //Place DAY description in each tooltip on Date cell int i = 0; foreach (DataGridViewRow row in _gridTimesheet.Rows) { Timesheet.Day day; if (i == 0) { day = _tsList[index].days[i]; } else { day = _tsList[index].days[i - 1]; } foreach (DataGridViewCell cell in row.Cells) { cell.ToolTipText = day.description.ToString(); } i++; } FormatViewTimesheetDataGridView(_gridTimesheet); }
private void BindGridAddTimesheet(List <DateTime> lsGuessedDates, float lunch = 0.5f) { totalHours = 0.0f; Timesheet.Timesheet ts = new Timesheet.Timesheet(); _dtNewTimesheet = new DataTable(); _dtNewTimesheet.TableName = "EmployeeTimesheets"; _dtNewTimesheet.Columns.Add(new DataColumn("Date", typeof(DateTime))); _dtNewTimesheet.Columns.Add(new DataColumn("Time Begin", typeof(DateTime))); // Time Start _dtNewTimesheet.Columns.Add(new DataColumn("Time End", typeof(DateTime))); _dtNewTimesheet.Columns.Add(new DataColumn("Lunch", typeof(double))); _dtNewTimesheet.Columns.Add(new DataColumn("Hours", typeof(double))); _dtNewTimesheet.Columns.Add(new DataColumn("Synopsis", typeof(string))); //Format new DataTable for conversion to TImesheet _dtNewTimesheet_Formatted = _dtNewTimesheet.Copy(); //new - fill _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("EmployeeToken", typeof(string))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("DateDescription", typeof(string))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("FirstName", typeof(string))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("LastName", typeof(string))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("DefaultEmailAddress", typeof(string))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("Month", typeof(int))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("Year", typeof(int))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("Quarter", typeof(int))); _dtNewTimesheet_Formatted.Columns.Add(new DataColumn("TotalHours", typeof(string))); _dtNewTimesheet_Formatted.Columns["Time Begin"].ColumnName = "StartHours"; _dtNewTimesheet_Formatted.Columns["Time End"].ColumnName = "EndHours"; // Get Guessed timesheet period dates, pre-fill datagridview rows; DateTime dtFromDate = lsGuessedDates[0]; DateTime dtToDate = lsGuessedDates[1]; DateTime dtFromTime = new DateTime(dtFromDate.Year, dtFromDate.Month, dtFromDate.Day, 8, 30, 00, 00); DateTime dtToTime = new DateTime(dtFromDate.Year, dtFromDate.Month, dtFromDate.Day, 17, 00, 00, 00); int inc = 0; for (DateTime date = dtFromDate.Date; date <= dtToDate; date = date.AddDays(1)) { DataRow row = _dtNewTimesheet.NewRow(); DataRow rowFormatted = _dtNewTimesheet_Formatted.NewRow(); // Do one for this dt as well _dtNewTimesheet.Rows.Add(row); _dtNewTimesheet_Formatted.Rows.Add(rowFormatted); // Do one for this dt as well if (date.DayOfWeek.ToString() == "Saturday" || date.DayOfWeek.ToString() == "Sunday") { // Notta } else { // original dt _dtNewTimesheet.Rows[inc]["Date"] = date; _dtNewTimesheet.Rows[inc]["Time Begin"] = dtFromTime; _dtNewTimesheet.Rows[inc]["Time End"] = dtToTime; // copy _dtNewTimesheet_Formatted.Rows[inc]["Date"] = date; _dtNewTimesheet_Formatted.Rows[inc]["StartHours"] = dtFromTime; _dtNewTimesheet_Formatted.Rows[inc]["EndHours"] = dtToTime; TimeSpan duration = new TimeSpan(dtFromTime.Ticks - dtToTime.Ticks); float rowHours = duration.TotalFloatHours(); float rowTotalHours = rowHours - lunch; rowTotalHours.Truncate(2); _dtNewTimesheet.Rows[inc]["Lunch"] = lunch; _dtNewTimesheet.Rows[inc]["Hours"] = rowTotalHours; //Copy _dtNewTimesheet_Formatted.Rows[inc]["Lunch"] = lunch; _dtNewTimesheet_Formatted.Rows[inc]["Hours"] = rowTotalHours; totalHours += rowHours - lunch; int quarter = dtFromDate.Day >= 1 && dtFromDate.Day <= 15 ? 1 : 2; if (_tsList.Count == 0) { string serviceUrlGetEmployee; serviceUrlGetEmployee = _urlGetEmployee + Properties.Settings.Default.EmployeeToken.ToString(); var request = (HttpWebRequest)WebRequest.Create(serviceUrlGetEmployee); request.Method = "GET"; var response = (HttpWebResponse)request.GetResponse(); var dataContractSerializier = new DataContractSerializer(typeof(Timesheet.Employee)); using (var responseStream = response.GetResponseStream()) { emp = (Timesheet.Employee)dataContractSerializier.ReadObject(responseStream); } response.Close(); _dtNewTimesheet_Formatted.Rows[inc]["TotalHours"] = totalHours; _dtNewTimesheet_Formatted.Rows[inc]["FirstName"] = emp.firstname.ToString(); _dtNewTimesheet_Formatted.Rows[inc]["LastName"] = emp.lastname.ToString(); _dtNewTimesheet_Formatted.Rows[inc]["EmployeeToken"] = emp.employeeToken; _dtNewTimesheet_Formatted.Rows[inc]["DefaultEmailAddress"] = emp.email.ToString(); _dtNewTimesheet_Formatted.Rows[inc]["Month"] = dtFromDate.Month; _dtNewTimesheet_Formatted.Rows[inc]["Year"] = dtFromDate.Year; _dtNewTimesheet_Formatted.Rows[inc]["Quarter"] = quarter; } //Copy only if (_tsList.Count > 0) { _dtNewTimesheet_Formatted.Rows[inc]["TotalHours"] = totalHours; _dtNewTimesheet_Formatted.Rows[inc]["DateDescription"] = "Coming in v2"; _dtNewTimesheet_Formatted.Rows[inc]["FirstName"] = _tsList[0].employee.firstname.ToString(); _dtNewTimesheet_Formatted.Rows[inc]["LastName"] = _tsList[0].employee.lastname.ToString(); _dtNewTimesheet_Formatted.Rows[inc]["EmployeeToken"] = _tsList[0].employee.employeeToken.ToString(); _dtNewTimesheet_Formatted.Rows[inc]["DefaultEmailAddress"] = _tsList[0].employee.email.ToString(); _dtNewTimesheet_Formatted.Rows[inc]["Month"] = dtFromDate.Month; _dtNewTimesheet_Formatted.Rows[inc]["Year"] = dtFromDate.Year; _dtNewTimesheet_Formatted.Rows[inc]["Quarter"] = quarter; } } inc++; } // SET U.I. GRID TO ORIGINAL DATA TABLE AND BIND _gridAddTimesheet.DataSource = _dtNewTimesheet; _gridAddTimesheet.Columns.Add(new DataGridViewCheckBoxColumn() { Name = "_delCol", HeaderText = "None", DisplayIndex = 0 }); //Time only in time fields _gridAddTimesheet.Columns["Time Begin"].DefaultCellStyle.Format = "hh:mm:ss tt"; _gridAddTimesheet.Columns["Time End"].DefaultCellStyle.Format = "hh:mm:ss tt"; _gridAddTimesheet.Columns["Lunch"].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; _lbl_AddTimesheet_TotalHoursValue.Text = totalHours.ToString(); _lbl_AddTimesheet_EmailValue.Text = _tsList.Count == 0 ? emp.email.ToString() : _tsList[0].employee.email.ToString(); /// FIX THIS _lbl_AddTimesheet_TimestampValue.Text = DateTime.Now.ToString(); }