示例#1
0
 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());
         }
 }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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();
            }
        }
示例#5
0
        // 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);
        }
示例#6
0
        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();
        }