protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string en_id = Request.QueryString["en_ID"].ToString(); if (en_id != string.Empty) { HiddenField1.Value = en_id; using (SPSite site = new SPSite(MyConfiguration.GetSiteURL(SPContext.Current))) { SPWeb hrWeb = site.AllWebs["HRMV02"]; SPList entitylist = hrWeb.Lists["Entity"]; //SPQuery qry_edit_entity = new SPQuery(); //qry_edit_entity.Query = @"<Where><Eq><FieldRef Name='ID'/><Value Type='Counter'>"+en_id+@"</Value></Eq></Where>"; SPListItem edit_entitylist_item = entitylist.GetItemById(Convert.ToInt32(en_id.ToString())); txtbox_edit_EntityName.Text = edit_entitylist_item["Title"].ToString(); rbtn_EntityStatus.Items.Clear(); SPFieldChoice rbt_entity_status = new SPFieldChoice(edit_entitylist_item.Fields, "Status"); for (int i = 0; i <= (Convert.ToInt16(rbt_entity_status.Choices.Count.ToString()) - 1); i++) { rbtn_EntityStatus.Items.Add(rbt_entity_status.Choices[i].ToString()); if (rbtn_EntityStatus.Items[i].Text == edit_entitylist_item["Status"].ToString()) { rbtn_EntityStatus.Items[i].Selected = true; //rbtn_EntityStatus.Items[i].Attributes["AutoPostBack"] = "false"; } } } } } }
protected void btn_Cancel_Entity_update_Click(object sender, EventArgs e) { SPSite site = new SPSite(MyConfiguration.GetSiteURL(SPContext.Current)); SPWeb hrweb = site.AllWebs["HRMV02"]; Response.Redirect(hrweb.Url.ToString()); }
protected SPDataSource entityds() { using (SPSite site = new SPSite(MyConfiguration.GetSiteURL(SPContext.Current))) { SPWeb hrWeb = site.AllWebs["HRMV02"]; SPDataSource entityds = new SPDataSource(); entityds.List = hrWeb.Lists["Entity"]; return(entityds); } }
protected void Page_Load(object sender, EventArgs e) { string siteurl = MyConfiguration.GetSiteURL(SPContext.Current); var Resource_Svc = new Resource(); Resource_Svc.AllowAutoRedirect = true; Resource_Svc.UseDefaultCredentials = true; Resource_Svc.Url = siteurl + "/_vti_bin/psi/resource.asmx"; LblCurrentResUID.Text = Resource_Svc.GetCurrentUserUid().ToString(); //LblCurrentResUID.Text = "6FF0A657-63BC-4390-8AAF-7EE5CE033088"; }
protected void btn_Save_Entity_update_Click(object sender, EventArgs e) { string cusiteurl = string.Empty; using (SPSite site = new SPSite(MyConfiguration.GetSiteURL(SPContext.Current))) { SPWeb hrWeb = site.AllWebs["HRMV02"]; cusiteurl = hrWeb.Url.ToString(); hrWeb.AllowUnsafeUpdates = true; SPList entitylist = hrWeb.Lists["Entity"]; SPListItem edit_entitylist_item = entitylist.GetItemById(Convert.ToInt32(HiddenField1.Value.ToString())); edit_entitylist_item["Title"] = txtbox_edit_EntityName.Text; edit_entitylist_item["Status"] = rbtn_EntityStatus.SelectedValue.ToString(); edit_entitylist_item.Update(); } Response.Redirect(cusiteurl); }
protected void Approve_Click(object sender, EventArgs e) { if (IsPostBack) { string siteurl = MyConfiguration.GetSiteURL(SPContext.Current); var Resource_Svc = new Resource(); Resource_Svc.AllowAutoRedirect = true; Resource_Svc.UseDefaultCredentials = true; Resource_Svc.Url = siteurl + "/_vti_bin/psi/resource.asmx"; var Timesheet_Svc = new TimeSheet(); Timesheet_Svc.AllowAutoRedirect = true; Timesheet_Svc.UseDefaultCredentials = true; Timesheet_Svc.Url = siteurl + "/_vti_bin/psi/timesheet.asmx"; string[] selectedtsuids = Request.Form["LstSelectedtsuids"].Split('#'); if (selectedtsuids.Length > 0) { var grouped_tsuids = (from c in selectedtsuids group c by c).ToList(); foreach (IGrouping <string, string> tsuid_str in grouped_tsuids) { if (tsuid_str.Key != string.Empty) { try { var tsuid = new Guid(tsuid_str.Key); var jobUID = Guid.NewGuid(); var nextapprover = Resource_Svc.GetCurrentUserUid(); Timesheet_Svc.QueueReviewTimesheet(jobUID, tsuid, nextapprover, "Approving using utility", ITXProjectsLibrary.WebSvcTimeSheet.Action.Approve); } catch (Exception ex) { MyConfiguration.ErrorLog("Error at approving timesheet due to " + ex.Message, EventLogEntryType.Error); } } } } LblStatus.Text = "Timesheet approval process completed successfully."; } }
protected SPDataSource resdetailds(int resfilterid) { using (SPSite site = new SPSite(MyConfiguration.GetSiteURL(SPContext.Current))) { SPWeb hrWeb = site.AllWebs["HRMV02"]; SPDataSource resdetds = new SPDataSource(); resdetds.SelectCommand = @"<Query> <Where> <Eq> <FieldRef Name='Department' LookupId='True' /> <Value Type='Lookup'>" + resfilterid + @"</Value> </Eq> </Where> </Query>"; resdetds.List = hrWeb.Lists["Resource Details"]; return(resdetds); } }
protected SPDataSource deptds(int deptid) { using (SPSite site = new SPSite(MyConfiguration.GetSiteURL(SPContext.Current))) { SPWeb hrWeb = site.AllWebs["HRMV02"]; SPDataSource deptds = new SPDataSource(); deptds.SelectCommand = @"<Query> <Where> <Eq> <FieldRef Name='Entity' LookupId='True'/> <Value Type='Lookup'>" + deptid + @"</Value> </Eq> </Where> </Query>"; deptds.List = hrWeb.Lists["Department"]; return(deptds); } }
protected void exportcsv_Click(object sender, EventArgs e) { string _stdate = _hiddenstdate.Value.ToString(); string _enddate = _hiddenenddate.Value.ToString(); DateTime _enddateformatted = Convert.ToDateTime(_enddate); string siteurl = HttpContext.Current.Request.UrlReferrer.ToString(); var url = new Uri(siteurl); string rbsurl = url.Scheme + "://" + url.Host + ":" + url.Port + url.Segments[0] + url.Segments[1]; Guid adminguid; var resource_svc = new Resource(); adminguid = new Guid("6FF0A657-63BC-4390-8AAF-7EE5CE033088"); resource_svc.Url = "http://jump/cimb/_vti_bin/psi/resource.asmx"; if (url.Host.ToString() != "localhost") { //var rbs = new ReadRBSValues(System.Net.CredentialCache.DefaultNetworkCredentials, "http://jump/cimb"); resource_svc.Url = rbsurl + "/_vti_bin/psi/resource.asmx"; } //var rbs = new ReadRBSValues(System.Net.CredentialCache.DefaultNetworkCredentials, rbsurl); //var resuids = rbs.GetBottomLevelResouceUIDs(); resource_svc.UseDefaultCredentials = true; resource_svc.AllowAutoRedirect = true; Guid currentuserid = resource_svc.GetCurrentUserUid(); string res_under_curr_user = @" SELECT ResourceUID FROM dbo.MSP_EpmResource_UserView WHERE (RBS Like ( ( SELECT RBS FROM dbo.MSP_EpmResource_UserView WHERE ResourceUID = '" + currentuserid.ToString() + @"' ) +'.%') ) AND ResourceIsActive = 1 "; WindowsImpersonationContext wik = null; wik = WindowsIdentity.Impersonate(IntPtr.Zero); SqlConnection con = new SqlConnection(MyConfiguration.GetDataBaseConnectionString(siteurl)); con.Open(); DataSet filterresourcelist = new DataSet(); SqlDataAdapter filterresourceadapter = new SqlDataAdapter(res_under_curr_user, con); filterresourceadapter.Fill(filterresourcelist); string filterresource = "("; foreach (DataRow row in filterresourcelist.Tables[0].Rows) { filterresource += "'" + row[0].ToString() + "',"; } /* foreach (var resuid in resuids) * { * filterresource += "'" + resuid.ToString() + "',"; * } */ filterresource = filterresource.Substring(0, filterresource.Length - 1) + ")"; string gridqry = @" SELECT res.ResourceUID, res.ResourceName, res.RBS, tperiod.PeriodUID, tperiod.PeriodStatusID, tperiod.StartDate, tperiod.EndDate, tperiod.PeriodName, tperiod.LCID, ISNULL(TM_Name.ResourceName, 'Not Assigned') AS TM_Name INTO [#t1] FROM MSP_EpmResource_UserView AS TM_Name RIGHT OUTER JOIN MSP_EpmResource_UserView AS res ON TM_Name.ResourceUID = res.ResourceTimesheetManagerUID CROSS JOIN MSP_TimesheetPeriod AS tperiod WHERE (tperiod.StartDate BETWEEN ( (SELECT CASE WHEN (TimeDayOfTheWeek = 2) THEN '" + _stdate + @"' WHEN (TimeDayOfTheWeek = 1) THEN DATEADD(d,1, '" + _stdate + @"' ) ELSE DATEADD(d,(2-TimeDayofTheWeek), '" + _stdate + @"' ) END AS stdate FROM MSP_TimeByDay WHERE (TimeByDay = CONVERT(DATETIME, '" + _stdate + @"' , 102))) ) AND '" + _enddate + @"' ) AND (res.ResourceUID IN " + filterresource + @") SELECT [#t1].PeriodUID, [#t1].ResourceUID,[#t1].TM_Name, [#t1].RBS, [#t1].ResourceName, [#t1].PeriodName, ISNULl(tstatus.Description,'Not Created') AS [TimeSheet Status], [#t1].StartDate, [#t1].EndDate INTO #t2 FROM MSP_TimesheetStatus AS tstatus INNER JOIN MSP_Timesheet AS tsheet ON tstatus.TimesheetStatusID = tsheet.TimesheetStatusID INNER JOIN MSP_TimesheetResource AS tres ON tsheet.OwnerResourceNameUID = tres.ResourceNameUID RIGHT OUTER JOIN [#t1] ON [#t1].ResourceUID = tres.ResourceUID AND [#t1].PeriodUID = tsheet.PeriodUID drop table #t1 SELECT PeriodName, TM_Name, ResourceName, COUNT(CASE WHEN ([TimeSheet Status] = 'In Progress') THEN [TimeSheet Status] END) AS [In Progress], COUNT(CASE WHEN ([TimeSheet Status] = 'Not Created') THEN [TimeSheet Status] END) AS [Not Created], COUNT(CASE WHEN ([TimeSheet Status] = 'Submitted') THEN [TimeSheet Status] END) AS Submitted, COUNT(CASE WHEN ([TimeSheet Status] = 'Approved') THEN [TimeSheet Status] END) AS Approved FROM [#t2] --WHERE ([TimeSheet Status] <> 'Approved') GROUP BY PeriodName, TM_Name, ResourceName ORDER BY PeriodName, TM_Name, ResourceName /* SELECT PeriodName, COUNT(CASE WHEN ([TimeSheet Status] = 'In Progress') THEN [TimeSheet Status] END) AS [In Progress], COUNT(CASE WHEN ([TimeSheet Status] = 'Not Created') THEN [TimeSheet Status] END) AS [Not Created], COUNT(CASE WHEN ([TimeSheet Status] = 'Submitted') THEN [TimeSheet Status] END) AS Submitted FROM [#t2] WHERE ([TimeSheet Status] <> 'Approved') GROUP BY PeriodName ORDER BY PeriodName */ drop table #t2 "; SPSecurity.RunWithElevatedPrivileges(delegate() { DataSet dt = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(new SqlCommand(gridqry, con)); adapter.Fill(dt); #region export function try { // You should be very carefull with sharepoint layout folder, we have to specify full control permission to everybody. string FolderPath = Server.MapPath("/_layouts/CIMB_TimeSheet/CSVFiles/"); if (Directory.Exists(FolderPath)) { foreach (string file in Directory.GetFiles(FolderPath)) { try { File.Delete(file); } catch (Exception ex) { } } } else { Directory.CreateDirectory(FolderPath); } string clientfilename = DateTime.Now.ToString("ddMMyyhhmmss") + DateTime.Now.Millisecond.ToString(); string filename = FolderPath + clientfilename + ".csv"; var writer = new StreamWriter(filename); //Writing column name at first row string columnheaderline = string.Empty; for (int i = 0; i < dt.Tables[0].Columns.Count; i++) { columnheaderline = columnheaderline + dt.Tables[0].Columns[i].ColumnName + ","; } writer.WriteLine(columnheaderline); // Writing row values foreach (DataRow row in dt.Tables[0].Rows) { string columnvalue = string.Empty; for (int i = 0; i < dt.Tables[0].Columns.Count; i++) { columnvalue = columnvalue + row[i] + ","; } writer.WriteLine(columnvalue); } try { writer.Flush(); writer.Close(); writer.Dispose(); } catch (Exception ex) { MyConfiguration.ErrorLog("Error in writing CSV : " + ex.Message, EventLogEntryType.Error); } // Sending files here Response.ContentType = "application/CSV"; Response.AddHeader("content-disposition", "attachment; filename=TimeSheetNonCompliance" + clientfilename + ".csv"); Response.TransmitFile(filename); Response.Flush(); Response.End(); } catch (Exception) { } #endregion export function }); }
protected void exportcsv_Click(object sender, EventArgs e) { string _stdate = _hiddenstdate.Value; string _enddate = _hiddenenddate.Value; DateTime _enddateformatted = Convert.ToDateTime(_enddate); string siteurl = HttpContext.Current.Request.UrlReferrer.ToString(); #region sqlqry string gridqry = @" SELECT t_res.ResourceUID AS ResUID, t_proj.ProjectUID AS ProjUID, t_res.ResourceName AS ResName, CASE WHEN t_class.Type <> 0 THEN t_class.ClassNAME ELSE t_proj.ProjectName END AS ProjName, t_act.TimeByDay AS t_date, t_act.TimeByDay_DayOfWeek AS t_wkday, t_class.Type AS t_type, CASE WHEN ((t_act.TimeByDay_DayOfWeek = 1 OR t_act.TimeByDay_DayOfWeek = 7) AND (t_class.Type = 1)) THEN '0' WHEN (t_class.Type = 1 AND (t_act.ActualWorkBillable + t_act.ActualWorkNonBillable + t_act.ActualOvertimeWorkBillable + t_act.ActualOvertimeWorkNonBillable <= 4)) THEN '4' WHEN (t_class.Type = 1 AND (t_act.ActualWorkBillable + t_act.ActualWorkNonBillable + t_act.ActualOvertimeWorkBillable + t_act.ActualOvertimeWorkNonBillable > 4)) THEN '8' ELSE t_act.ActualWorkBillable + t_act.ActualWorkNonBillable + t_act.ActualOvertimeWorkBillable + t_act.ActualOvertimeWorkNonBillable END AS totaltime INTO [#t1] FROM MSP_TimesheetActual AS t_act INNER JOIN MSP_TimesheetResource AS t_res ON t_act.LastChangedResourceNameUID = t_res.ResourceNameUID INNER JOIN MSP_TimesheetLine AS t_line ON t_act.TimesheetLineUID = t_line.TimesheetLineUID INNER JOIN MSP_TimesheetClass AS t_class ON t_line.ClassUID = t_class.ClassUID INNER JOIN MSP_TimesheetProject AS t_proj ON t_line.ProjectNameUID = t_proj.ProjectNameUID WHERE (t_act.TimeByDay BETWEEN '" + _stdate + @"' AND '" + _enddate + @"') ORDER BY ResUID, t_date, t_type SELECT #t1.ResUID, #t1.ProjUID, #t1.ResName, #t1.ProjName, #t1.t_date, #t1.t_wkday, #t1.t_type, #t1.totaltime, ISNULL(dummyt1_nkwking.nonwktotal,0) AS nwktotal, ISNULL(dummyt1.daytotal,0) AS daytotal, CASE WHEN #t1.t_type <> 1 AND ((dummyt1_nkwking.nonwktotal = 4 AND dummyt1.daytotal >4)or (ISNULL(dummyt1_nkwking.nonwktotal,0) =8) or (ISNULL(dummyt1_nkwking.nonwktotal,0) = 0 AND dummyt1.daytotal > 8)) THEN (8-ISNULL(dummyt1_nkwking.nonwktotal,0))*#t1.totaltime/(CASE WHEN dummyt1.daytotal=0 THEN 1.0 ELSE ISNULL(dummyt1.daytotal,1) END) ELSE #t1.totaltime END AS normalizedtime into #t2 FROM #t1 LEFT OUTER JOIN( SELECT dummyt1_nwking.ResUID, dummyt1_nwking.t_date, SUM(dummyt1_nwking.totaltime) AS nonwktotal FROM [#t1] AS dummyt1_nwking WHERE (dummyt1_nwking.t_type = 1) GROUP BY dummyt1_nwking.ResUID, dummyt1_nwking.t_date --ORDER BY dummyt1_nwking.ResUID, dummyt1_nwking.t_date ) AS dummyt1_nkwking ON #t1.ResUID = dummyt1_nkwking.ResUID AND #t1.t_date = dummyt1_nkwking.t_date LEFT OUTER JOIN ( SELECT dummyt1.ResUID, dummyt1.t_date, SUM(dummyt1.totaltime) AS daytotal FROM [#t1] AS dummyt1 WHERE (dummyt1.t_type <> 1) GROUP BY dummyt1.ResUID, dummyt1.t_date --ORDER BY dummyt1.ResUID, dummyt1.t_date ) AS dummyt1 ON #t1.ResUID = dummyt1.ResUID AND #t1.t_date = dummyt1.t_date ORDER BY #t1.ResUID, #t1.t_date, #t1.t_type drop table #t1 SELECT distinct TimeByDay AS missing_date,TimeDayOfTheWeek AS missing_wkday, t_Resources.ResUID AS missing_ResUID, t_Resources.ResName INTO #t3 FROM MSP_TimeByDay CROSS JOIN (SELECT distinct [#t2].ResUID, #t2.ResName FROM [#t2]) AS t_Resources WHERE (TimeByDay BETWEEN '" + _stdate + @"' AND '" + _enddate + @"') AND (NOT EXISTS (SELECT * FROM [#t2] WHERE MSP_TimeByDay.TimeByDay = [#t2].t_date AND t_Resources.ResUID = [#t2].ResUID)) INSERT INTO #t2 SELECT #t3.missing_ResUID, 'E38038FA-F8CA-47D1-BFD4-6B45B8462972',#t3.ResName,'NotClocked',#t3.missing_date, #t3.missing_wkday, 1, 8, 8,0,8 FROM #t3 WHERE #t3.missing_wkday <> '1' AND #t3.missing_wkday <> '7' drop table #t3 SELECT #t2.ResUID, SUM(#t2.normalizedtime) AS total_paid_leave INTO #t4 FROM #t2 WHERE #t2.t_type = 1 AND #t2.ProjName = 'Paid Leave-Public Holiday' GROUP By #t2.ResUID SELECT #t2.ResUID,#t2.ProjUID, SUM( (CONVERT(NUMERIC(18,14),#t2.normalizedtime) /(CASE WHEN nortotal.total_Proj = 0 THEN 1.0 ELSE CONVERT(NUMERIC(18,14),nortotal.total_Proj) END) )*CONVERT(NUMERIC(18,14),ISNULL(#t4.total_paid_leave,0)) + CONVERT(NUMERIC(18,14),#t2.normalizedtime) ) AS normalized_proj_time INTO #t5 FROM #t2 INNER JOIN (select #t2.ResUID, SUM(#t2.normalizedtime) AS total_Proj FROM #t2 WHERE t_type = 0 GROUP BY #t2.ResUID) AS nortotal ON #t2.ResUID = nortotal.ResUID LEFT OUTER JOIN #t4 ON #t2.ResUID = #t4.ResUID WHERE #t2.t_type = 0 GROUP BY #t2.ResUID, #t2.ProjUID, #t2.ProjName, #t2.t_type --select * from #t2 drop table #t4 SELECT #t2.ResUID, #t2.ProjUID, #t2.ProjName, #t2.t_type, SUM (convert(numeric(18,14),#t2.normalizedtime)) AS nor_time INTO #t6 FROM #t2 GROUP By #t2.ResUID, #t2.ProjUID, #t2.ProjName,#t2.t_type drop table #t2 select #t6.ResUID, #t6.ProjUID, #t6.ProjName, CASE WHEN #t6.t_type = 0 THEN #t5.normalized_proj_time ELSE #t6.nor_time END AS total_time, CASE WHEN #t6.t_type = 0 THEN (convert (float,#t5.normalized_proj_time)/res_total.res_total_time)*100 ELSE (convert(float,#t6.nor_time) /res_total.res_total_time)*100 END AS pct_total_time, #t6.t_type INTO #t7 from #t6 LEFT OUTER JOIN #t5 on #t6.ResUID = #t5.ResUID and #t6.ProjUID = #t5.ProjUID LEFT OUTER JOIN (select #t6.ResUID, SUM (#t6.nor_time) AS res_total_time FROM #t6 GROUP BY #t6.ResUID) AS res_total ON #t6.ResUID = res_total.ResUID where #t6.ProjName <> 'Paid Leave-Public Holiday' order by #t6.ResUID drop table #t5 drop table #t6 select #t7.ResUID, #t7.ProjUID, #t7.ProjName, #t7.total_time, #t7.pct_total_time,uv_res.ResourceName, ISNULL (uv_proj.Project_RC_Code, #t7.ProjName) AS costcode, ISNULL(uv_res.ResourceEmailAddress,'NoEmail') AS res_email, ISNULL(uv_res.RBS, 'NoRBS') AS RBS FROM #t7 left outer join dbo.MSP_EpmResource_UserView as uv_res on #t7.ResUID = uv_res.ResourceUID left outer join dbo.MSP_EpmProject_UserView as uv_proj on #t7.ProjUID = uv_proj.ProjectUID order by #t7.resuid, #t7.t_type drop table #t7 "; string rc_code_qry = @" SELECT MemberFullValue FROM MSPLT_Project_RC_Code_UserView WHERE (ParentLookupMemberUID IS NOT NULL) ORDER BY CAST(MemberFullValue AS varchar(500)) "; #endregion sqlqry WindowsImpersonationContext wik = null; wik = WindowsIdentity.Impersonate(IntPtr.Zero); SPSecurity.RunWithElevatedPrivileges(delegate() { SqlConnection con = new SqlConnection(MyConfiguration.GetDataBaseConnectionString(siteurl)); con.Open(); DataSet dt = new DataSet(); DataSet rc_code_dt = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(new SqlCommand(gridqry, con)); adapter.Fill(dt); DataTable maintbl = dt.Tables[0]; adapter = new SqlDataAdapter(new SqlCommand(rc_code_qry, con)); adapter.Fill(rc_code_dt); DataTable rc_code_table = rc_code_dt.Tables[0]; MyConfiguration.ErrorLog("Main Table Row count = " + dt.Tables[0].Rows.Count, EventLogEntryType.SuccessAudit); maintbl.Columns.Add("HRISID"); maintbl.Columns.Add("OLDEMPID"); maintbl.Columns.Add("PayRolStDate"); maintbl.Columns.Add("PayRolEntity"); maintbl.Columns.Add("staftype"); string pctcolumntype = maintbl.Columns["pct_total_time"].DataType.ToString(); DataView view = new DataView(dt.Tables[0]); DataTable resourcelist = view.ToTable(true, "ResourceName", "res_email"); string resname = string.Empty; string resemail = string.Empty; try { using (SPSite site = new SPSite(MyConfiguration.frm_siteurl_GetSiteURL(siteurl))) { foreach (DataRow row in resourcelist.Rows) { SPWeb hrWeb = site.AllWebs["HRMV02"]; SPList res_detail = hrWeb.Lists["Resource Details"]; SPList seconded = hrWeb.Lists["Resource Secondment"]; SPQuery qry = new SPQuery(); qry.Query = @"<Where> <Eq> <FieldRef Name='EMail'/> <Value Type='Text'>" + row[1].ToString() + @"</Value> </Eq> </Where>"; SPListItemCollection items = res_detail.GetItems(qry); #region secondment and resource data from HR Manipulation if (items.Count > 0) { foreach (SPListItem itm in items) { #region secondment query SPQuery secondedqry = new SPQuery(); secondedqry.Query = @" <ViewFields> <FieldRef Name='Department' /> <FieldRef Name='From_x0020_Date' /> <FieldRef Name='To_x0020_Date' /> </ViewFields> <Where> <And> <Eq> <FieldRef Name='Resource_x0020_Name' /> <Value Type='Lookup'>" + itm["Resource Name"].ToString() + @"</Value> </Eq> <Leq> <FieldRef Name='From_x0020_Date' /> <Value Type='DateTime'>" + string.Format("{0:yyyy-MM-dd}", _enddateformatted) + @"</Value> </Leq> </And> </Where> <OrderBy> <FieldRef Name='ID' Ascending='False' /> </OrderBy> <RowLimit>1</RowLimit> "; #endregion secondment query //MyConfiguration.ErrorLog("List Resource Name : " + itm["Resource Name"].ToString(), EventLogEntryType.SuccessAudit); //MyConfiguration.ErrorLog("List Department Name : " + itm["Department"].ToString(), EventLogEntryType.SuccessAudit); foreach (DataRow ro in maintbl.Select("res_email = '" + row[1].ToString() + "'")) { ro["ResourceName"] = itm["Resource Name"].ToString(); if ((itm.Fields.ContainsField("HRIS_x0020_ID")) && (itm["HRIS_x0020_ID"] != null)) { ro["HRISID"] = itm["HRIS_x0020_ID"].ToString(); } else { ro["HRISID"] = "-"; } if ((itm.Fields.ContainsField("Old_x0020_Emp_x0020_Num")) && (itm["Old_x0020_Emp_x0020_Num"] != null)) { ro["OLDEMPID"] = itm["Old_x0020_Emp_x0020_Num"].ToString(); } else { ro["OLDEMPID"] = "-"; } if ((itm.Fields.ContainsField("Date_x0020_On_x0020_Board")) && (itm["Date_x0020_On_x0020_Board"] != null)) { ro["PayRolStDate"] = itm["Date_x0020_On_x0020_Board"].ToString(); } else { ro["PayRolStDate"] = "01-01-1900"; } if ((itm.Fields.ContainsField("Department")) && (itm["Department"] != null)) { string[] deptname = itm["Department"].ToString().Split(new char[] { ';', '#' }, StringSplitOptions.RemoveEmptyEntries); SPList deptlist = hrWeb.Lists["Department"]; SPListItem deptitem = deptlist.GetItemById(Convert.ToInt32(deptname[0].ToString())); string[] entityname = deptitem["Entity"].ToString().Split(new char[] { ';', '#' }, StringSplitOptions.RemoveEmptyEntries); ro["PayRolEntity"] = entityname[1].ToString(); if (ro["ProjName"].ToString() != string.Empty && ro["ProjName"].ToString() == "Orignal Department") { ro["ProjName"] = deptname[1].ToString(); if ((deptitem.Fields.ContainsField("Cost_x0020_Code")) && (deptitem["Cost_x0020_Code"] != null)) { ro["costcode"] = deptitem["Cost_x0020_Code"].ToString(); } else { ro["costcode"] = deptname[1].ToString(); } } } else { ro["PayRolEntity"] = "-"; } if ((itm.Fields.ContainsField("Resource_x0020_Type")) && (itm["Resource_x0020_Type"] != null)) { ro["staftype"] = itm["Resource_x0020_Type"].ToString(); } else { ro["staftype"] = "-"; } SPListItemCollection secondeditems = seconded.GetItems(secondedqry); if (secondeditems.Count > 0) { foreach (SPListItem secondeditem in secondeditems) { if ((secondeditem.Fields.ContainsField("Department")) && (secondeditem["Department"] != null)) { string[] deptname = secondeditem["Department"].ToString().Split(new char[] { ';', '#' }, StringSplitOptions.RemoveEmptyEntries); SPList deptlist = hrWeb.Lists["Department"]; SPListItem deptitem = deptlist.GetItemById(Convert.ToInt32(deptname[0].ToString())); string[] entityname = deptitem["Entity"].ToString().Split(new char[] { ';', '#' }, StringSplitOptions.RemoveEmptyEntries); ro["PayRolEntity"] = entityname[1].ToString(); if (ro["ProjName"].ToString() != string.Empty && ro["ProjName"].ToString() == "TO BAU") { ro["ProjName"] = deptname[1].ToString(); if ((deptitem.Fields.ContainsField("Cost_x0020_Code")) && (deptitem["Cost_x0020_Code"] != null)) { ro["costcode"] = deptitem["Cost_x0020_Code"].ToString(); } else { ro["costcode"] = deptname[1].ToString(); } } //MyConfiguration.ErrorLog("Resource Name: " + ro["ResourceName"].ToString(), EventLogEntryType.SuccessAudit); //MyConfiguration.ErrorLog("Deptment: " + ro["ProjName"].ToString(), EventLogEntryType.SuccessAudit); //MyConfiguration.ErrorLog("Code: " + ro["costcode"].ToString(), EventLogEntryType.SuccessAudit); } } } } } } else { foreach (DataRow ro in maintbl.Select("res_email = '" + row[1].ToString() + "'")) { ro["HRISID"] = "NA in HRM"; ro["OLDEMPID"] = "NA in HRM"; ro["PayRolStDate"] = "01-01-1900"; ro["PayRolEntity"] = "NA in HRM"; ro["staftype"] = "Internal"; } } #endregion secondment and resource data from HR Manipulation } } } catch (Exception ex) { MyConfiguration.ErrorLog("Error in accessing SPSite" + ex.Message, EventLogEntryType.Error); } maintbl.DefaultView.Sort = "staftype DESC"; DataView pivotview = new DataView(maintbl); DataTable pivotviewtable = pivotview.ToTable(false, "ResUID", "costcode", "pct_total_time"); var qyery = (from c in maintbl.AsEnumerable() group c by new { cost_code = c.Field <string>("costcode"), res_uid = c.Field <Guid>("ResUID") } into grp orderby grp.Key.res_uid, grp.Key.cost_code select new { ResUID = grp.Key.res_uid, costcode = grp.Key.cost_code, pct_total_time = grp.Sum(r => r.Field <double>("pct_total_time")) }); DataTable pvtable = qyery.CopyToDataTable(); DataTable resulttbl = new DataTable(); try { resulttbl = Pivot(pvtable, "ResUID", "costcode", "pct_total_time"); } catch (Exception ex) { MyConfiguration.ErrorLog("Error in Pivot data: " + ex.Message, EventLogEntryType.Error); } try { resulttbl.Columns.Add("RBS"); resulttbl.Columns.Add("ResourceName"); resulttbl.Columns.Add("HRISID"); resulttbl.Columns.Add("OLDEMPID"); resulttbl.Columns.Add("PayRolStDate"); resulttbl.Columns.Add("PayRolEntity"); resulttbl.Columns.Add("staftype"); resulttbl.Columns["RBS"].SetOrdinal(1); resulttbl.Columns["ResourceName"].SetOrdinal(2); resulttbl.Columns["HRISID"].SetOrdinal(3); resulttbl.Columns["OLDEMPID"].SetOrdinal(4); resulttbl.Columns["PayRolStDate"].SetOrdinal(5); resulttbl.Columns["PayRolEntity"].SetOrdinal(6); resulttbl.Columns["staftype"].SetOrdinal(7); } catch (Exception ex) { MyConfiguration.ErrorLog("Error Adding Field: " + ex.Message, EventLogEntryType.Error); } try { if (rc_code_table.Rows.Count > 0) { int columnindex = 8; foreach (DataRow ro in rc_code_table.Rows) { bool found = false; foreach (DataColumn resultcolumn in resulttbl.Columns) { if (ro[0].ToString() == resultcolumn.ColumnName) { found = true; } } if (found == false) { resulttbl.Columns.Add(ro[0].ToString()); } resulttbl.Columns[ro[0].ToString()].SetOrdinal(columnindex++); } } } catch (Exception ex) { MyConfiguration.ErrorLog("Error in adding column:" + ex.Message, EventLogEntryType.Error); } DataView resdetailview = new DataView(maintbl); DataTable resdetailtable = resdetailview.ToTable(true, "RBS", "ResUID", "ResourceName", "HRISID", "OLDEMPID", "PayRolStDate", "PayRolEntity", "staftype"); try { foreach (DataRow ro in resulttbl.Rows) { foreach (DataRow mtlrow in resdetailtable.Select("ResUID = '" + ro["ResUID"] + "'")) { ro["RBS"] = mtlrow["RBS"]; ro["ResourceName"] = mtlrow["ResourceName"]; ro["HRISID"] = mtlrow["HRISID"].ToString(); ro["OLDEMPID"] = mtlrow["OLDEMPID"]; if (mtlrow["PayRolStDate"].ToString() != "00-00-000") { ro["PayRolStDate"] = Convert.ToDateTime(mtlrow["PayRolStDate"]).ToString("dd-MM-yyyy"); } else { ro["PayRolStDate"] = mtlrow["PayRolStDate"]; } ro["PayRolEntity"] = mtlrow["PayRolEntity"]; ro["staftype"] = mtlrow["staftype"]; } } } catch (Exception ex) { MyConfiguration.ErrorLog("Error in Adding Resource Details:" + ex.Message, EventLogEntryType.Error); } #region export function WindowsImpersonationContext wic = null; try { try { wic = WindowsIdentity.Impersonate(IntPtr.Zero); } catch (Exception) { } // You should be very carefull with sharepoint layout folder, we have to specify full control permission to everybody. string FolderPath = Server.MapPath("/_layouts/CIMB_TimeSheet/CSVFiles/"); if (Directory.Exists(FolderPath)) { foreach (string file in Directory.GetFiles(FolderPath)) { try { File.Delete(file); } catch (Exception ex) { } } } else { Directory.CreateDirectory(FolderPath); } string clientfilename = DateTime.Now.ToString("ddMMyyhhmmss") + DateTime.Now.Millisecond.ToString(); string filename = FolderPath + clientfilename + ".csv"; var writer = new StreamWriter(filename); //Writing column name at first row string columnheaderline = string.Empty; for (int i = 1; i < resulttbl.Columns.Count; i++) { columnheaderline = columnheaderline + resulttbl.Columns[i].ColumnName + ","; } writer.WriteLine(columnheaderline); // Writing row values foreach (DataRow row in resulttbl.Rows) { string columnvalue = string.Empty; for (int i = 1; i < resulttbl.Columns.Count; i++) { if (i > 7) { if (row[i].ToString() != string.Empty) { columnvalue = columnvalue + row[i] + "%,"; } else { columnvalue = columnvalue + "0%,"; } } else { columnvalue = columnvalue + row[i] + ","; } } writer.WriteLine(columnvalue); } try { writer.Flush(); writer.Close(); writer.Dispose(); } catch (Exception ex) { MyConfiguration.ErrorLog("Error in writing CSV : " + ex.Message, EventLogEntryType.Error); } // Sending files here Response.ContentType = "application/CSV"; Response.AddHeader("content-disposition", "attachment; filename=Res_Captilisation" + clientfilename + ".csv"); Response.TransmitFile(filename); Response.Flush(); Response.End(); } catch (Exception) { } #endregion export function }); }