partial void Test_Execute() { CreateNewDocument nd = new CreateNewDocument(); Microsoft.LightSwitch.Framework.EntitySet <Task> tasks = this.DataWorkspace.MDSData.Tasks; nd.getGroupedTasks(tasks, "(UBT) Modelling of glovebox station from original drawings", true); //nd.getGroupedTasks(@"C:\Downloads\A Tale of Two Cities.txt"); }
/// <summary> /// Groups tasks together according to Project. /// </summary> /// <param name="tasks"></param> /// <param name="Project"></param> /// <param name="IsProjectDoc"></param> /// <returns></returns> public dynamic getGroupedTasks(Microsoft.LightSwitch.Framework.EntitySet <Task> tasks, String Project = "ProjectTitle", Boolean IsProjectDoc = false) { List <Task> groupedTasks = new List <Task>(); if (IsProjectDoc) { var groupedTasksByProject = from Task t in tasks where t.Project != null let project = t.Project.ProjectTitle group new { t.TaskName, t.User, t.Day, t.Hours, t.TaskType, t.Project } by project into groupedTask orderby groupedTask.Key select groupedTask; var summary = from Task t in tasks where t.Project != null let k = new { Month = t.Day, Project = t.Project.ProjectTitle } group t by k into tasksSum select new { Month = tasksSum.Key.Month, Project = tasksSum.Key.Project, Qty = tasksSum.Sum(t => Convert.ToDecimal(t.Hours)) }; foreach (var task in groupedTasksByProject) { Console.WriteLine("Project: {0}", (task.Key)); foreach (var item in task) { Console.WriteLine("\t{0},{1},{2},{3},{4},{5}", item.Day, item.User, item.TaskName, item.Hours, item.TaskType, item.Project.ProjectTitle); } } foreach (var item in summary) { Console.WriteLine(item); } } else { foreach (Task t in tasks) { getCommonWords(t.TaskName, t.Project.ProjectTitle); } } // Need to figure out the common words in each task description if the task isn't project-related return(groupedTasks); }
/// <summary> /// Generates a new document based on the document name and associated properties. /// Uses entitysets for the documents/tasks/reviews required. /// TO DO: /// 1) Check whether files exist in the Vault and prompt user to check out/update as necessary. /// 2) /// </summary> /// <param name="DocumentName">The name of the document we are creating.</param> /// <param name="LSProp">The Properties we wish to publish</param> /// <param name="LSDocs">The list of documents/tasks/reviews we need to publish</param> /// <param name="IsProjectDoc">Defines whether the document is using project data or independant</param> /// <param name="ListByProjectOnly">Defines whether the document (Timesheet mainly) is using project data.</param> public void GenerateFromAddNew(string DocumentName, dynamic LSProp, dynamic LSDocs, Boolean IsProjectDoc = true, Boolean ListByProjectOnly = false) { List <ColumnMapping> mapContent = new List <ColumnMapping>(); List <OfficeIntegration.ColumnMapping> mappings = new List <ColumnMapping>(); string wordDoc = ""; dynamic doc = ""; string filename = ""; if (IsProjectDoc) // project-specific! { mapContent.Add(new ColumnMapping("Customer", "Customer")); mapContent.Add(new ColumnMapping("ProjectTitle", "Project")); mapContent.Add(new ColumnMapping("MatrixSalesOrderNo", "MatrixSalesOrderNo")); mapContent.Add(new ColumnMapping("MatrixProjectCode", "MatrixProjectCode")); mapContent.Add(new ColumnMapping("CustomerProjectCode", "CustomerProjectCode")); mapContent.Add(new ColumnMapping("CustomerOrderNo", "CustomerOrderNo")); mapContent.Add(new ColumnMapping("UserName", "UserName")); mapContent.Add(new ColumnMapping("UserPosition", "UserPosition")); } else //non project-specific! { mapContent.Add(new ColumnMapping("Customer", "Customer")); mapContent.Add(new ColumnMapping("MatrixSalesOrderNo", "MatrixSalesOrderNo")); mapContent.Add(new ColumnMapping("UserName", "UserName")); mapContent.Add(new ColumnMapping("UserPosition", "UserPosition")); } dynamic word = null; #region "Document-specific" switch (DocumentName) { case "CofC": #region "CofC --WORKING! 2013-10-01 AF" LightSwitchApplication.CofC cofC = LSProp; //template name wordDoc = matrixDocs + "CofC QMF 10 Issue 06.dotx"; //template-specifics mapContent.Add(new ColumnMapping("DeliveryNoteNo", "DeliveryNoteNo")); mapContent.Add(new ColumnMapping("CertificateNo", "CertificateNo")); mapContent.Add(new ColumnMapping("CofCDate", "CofCDate")); doc = OfficeIntegration.Word.GenerateDocument(wordDoc, cofC, mapContent); //template datatable-specific columns mappings.Add(new OfficeIntegration.ColumnMapping("", "Quantity")); mappings.Add(new OfficeIntegration.ColumnMapping("", "DrawingNumber")); mappings.Add(new OfficeIntegration.ColumnMapping("", "DrawingRevision")); mappings.Add(new OfficeIntegration.ColumnMapping("", "DrawingTitle")); word = OfficeIntegration.Word.GetWord(); Word.GetDocument(word, wordDoc); //export our list of documents: Microsoft.LightSwitch.Framework.EntitySet <CofCDoc> docs = LSDocs; var cofcresults = from a in docs where a.CofC.CertificateNo == cofC.CertificateNo select a; Word.Export(doc, "DataTable", 2, false, cofcresults, mappings); filename = @"\\MATRIXSERVER\Data\01 - CAD SUPPORT FILES\CofCs\" + cofC.CertificateNo + ".docx"; break; #endregion case "DT": #region "Transmittal --WORKING! 2013-12-03 AF" LightSwitchApplication.Transmittal trans = LSProp; //this transimittal! //template name wordDoc = matrixDocs + "DT QMF39 Issue 02.dotx"; //template-specifics mapContent.Add(new ColumnMapping("TransId", "TransmittalNumber")); mapContent.Add(new ColumnMapping("Month", "Month")); mapContent.Add(new ColumnMapping("UserName", "UserName")); mapContent.Add(new ColumnMapping("Recipient", "Recipient")); mapContent.Add(new ColumnMapping("QueryDate", "QueryDate")); doc = OfficeIntegration.Word.GenerateDocument(wordDoc, trans, mapContent); //template datatable-specific columns mappings.Add(new OfficeIntegration.ColumnMapping("", "DocNo")); mappings.Add(new OfficeIntegration.ColumnMapping("", "DocRevision")); mappings.Add(new OfficeIntegration.ColumnMapping("", "SheetSize")); mappings.Add(new OfficeIntegration.ColumnMapping("", "MPENumber")); mappings.Add(new OfficeIntegration.ColumnMapping("", "DocTitle")); mappings.Add(new OfficeIntegration.ColumnMapping("", "Copies")); mappings.Add(new OfficeIntegration.ColumnMapping("", "TransmittalDocReasonsForIssue")); word = OfficeIntegration.Word.GetWord(); Word.GetDocument(word, wordDoc); Microsoft.LightSwitch.Framework.EntitySet <TransmittalDoc> transDocs = LSDocs; //all the documents! var transresults = from TransmittalDoc a in transDocs where a.Transmittal.TransmittalNumber == trans.TransmittalNumber select a; Word.Export(doc, "DataTable", 2, false, transresults, mappings); filename = @"\\MATRIXSERVER\Data\01 - CAD SUPPORT FILES\Transmittals\" + trans.TransmittalNumber + ".docx"; break; #endregion case "DDA": #region "Drawing and Document Approval Form --WORKING! 2013-10-02 AF" LightSwitchApplication.DandDA dandDA = LSProp; //this DandDA! //template name wordDoc = matrixDocs + "DDA QMF47 ISsue 02.dotx"; //template-specifics mapContent.Add(new ColumnMapping("DDAId", "DDANumber")); mapContent.Add(new ColumnMapping("DDADate", "DDADate")); doc = OfficeIntegration.Word.GenerateDocument(wordDoc, dandDA, mapContent); //template datatable-specific columns mappings.Add(new OfficeIntegration.ColumnMapping("", "DrawingNo")); mappings.Add(new OfficeIntegration.ColumnMapping("", "Title")); mappings.Add(new OfficeIntegration.ColumnMapping("", "Revision")); word = OfficeIntegration.Word.GetWord(); Word.GetDocument(word, wordDoc); Microsoft.LightSwitch.Framework.EntitySet <DandADoc> DandDADocs = LSDocs; //all the documents! var dandDAResults = from DandADoc a in DandDADocs where a.DandDA.DDANumber == dandDA.DDANumber select a; Word.Export(doc, "DataTable", 2, false, dandDAResults, mappings); filename = @"\\MATRIXSERVER\Data\01 - CAD SUPPORT FILES\DDAs\" + dandDA.DDANumber + ".docx"; break; #endregion case "DDC": #region "Drawing and Document Control Form --WORKING! 2013-10-11 AF" LightSwitchApplication.DandDC dandDC = LSProp; //this DandDC! filename = @"\\MATRIXSERVER\Data\01 - CAD SUPPORT FILES\DDCs\" + dandDC.DDCNumber + ".docx"; if (!File.Exists(filename)) //new file { //template name wordDoc = matrixDocs + "DDC QMF25 Issue 02.dotx"; mapContent.Add(new ColumnMapping("DesignId", "DDCId")); mapContent.Add(new ColumnMapping("Month", "Month")); mapContent.Add(new ColumnMapping("BasedOn", "BasedOn")); mapContent.Add(new ColumnMapping("Essentials", "Essentials")); mapContent.Add(new ColumnMapping("StatsRegs", "StatsRegs")); mapContent.Add(new ColumnMapping("SpecReqs", "SpecReqs")); mapContent.Add(new ColumnMapping("DandDCStartDate", "DandDCStartDate")); doc = OfficeIntegration.Word.GenerateDocument(wordDoc, dandDC, mapContent); } else //updating the existing file. { wordDoc = filename; mapContent.Add(new ColumnMapping("Verification", "OutputsVerification")); mapContent.Add(new ColumnMapping("Validation", "OutputsValidation")); mapContent.Add(new ColumnMapping("OutputsValiMDate", "OutputsValiMDate")); mapContent.Add(new ColumnMapping("OutputsVeriMDate", "OutputsVeriMDate")); mapContent.Add(new ColumnMapping("OutputsVeriMMatrixAttendees", "MatrixVerificationMeetingAttendees")); mapContent.Add(new ColumnMapping("OutputsVeriMClientAttendees", "ClientVerificationMeetingAttendees")); mapContent.Add(new ColumnMapping("OutputsValiMMatrixAttendees", "MatrixValidationMeetingAttendees")); mapContent.Add(new ColumnMapping("OutputsValiMClientAttendees", "ClientValidationMeetingAttendees")); doc = OfficeIntegration.Word.GenerateDocument(wordDoc, dandDC, mapContent); mappings.Add(new OfficeIntegration.ColumnMapping("", "ReviewDateStr")); mappings.Add(new OfficeIntegration.ColumnMapping("", "Reviewer")); mappings.Add(new OfficeIntegration.ColumnMapping("", "ReviewLocation")); mappings.Add(new OfficeIntegration.ColumnMapping("", "ReviewComment")); word = OfficeIntegration.Word.GetWord(); Word.GetDocument(word, wordDoc); Microsoft.LightSwitch.Framework.EntitySet <Review> reviews = LSDocs; //all the documents! var dandDCResults = from Review a in reviews where a.Project.ProjectTitle == dandDC.Project.ProjectTitle select a; Word.Export(doc, "Reviews", 3, false, dandDCResults, mappings); filename = @"\\MATRIXSERVER\Data\01 - CAD SUPPORT FILES\DDCs\" + dandDC.DDCNumber + ".docx"; } #endregion break; case "COPT": #region "CAD Office Project Report --WORKING! 2013-12-03 AF" LightSwitchApplication.CADOfficeProjT copt = LSProp; //var myDocs = Environment.GetFolderPath(Environment.SpecialFolder.Templates); wordDoc = matrixDocs + "COPT QMF41 Issue 02.dotx"; //template-specifics mapContent.Add(new ColumnMapping("COPTId", "COPTNumber")); mapContent.Add(new ColumnMapping("Month", "Month")); mapContent.Add(new ColumnMapping("Year", "Year")); mapContent.Add(new ColumnMapping("UserName", "UserName")); doc = OfficeIntegration.Word.GenerateDocument(wordDoc, copt, mapContent); //template datatable-specific columns mappings.Add(new OfficeIntegration.ColumnMapping("", "TaskDate")); mappings.Add(new OfficeIntegration.ColumnMapping("", "TaskName")); mappings.Add(new OfficeIntegration.ColumnMapping("", "Hours")); word = OfficeIntegration.Word.GetWord(); Word.GetDocument(word, wordDoc); //Project or month-specifics: Microsoft.LightSwitch.Framework.EntitySet <Task> tasks = LSDocs; //dynamic sortedGroups = getGroupedTasks(tasks); if (IsProjectDoc) //project tasks { var filteredTasks = from Task t in tasks where t.Project != null select t; if (copt.EndDate == null) { if (!ListByProjectOnly) { coptresults = from Task b in filteredTasks where b.Project.ProjectTitle == copt.Project.ProjectTitle && b.Day >= copt.StartDate && b.User == copt.UserName select b; } else { coptresults = from Task b in filteredTasks where b.Project.ProjectTitle == copt.Project.ProjectTitle && b.Day >= copt.StartDate select b; } } else { if (!ListByProjectOnly) { coptresults = from Task b in filteredTasks where b.Project.ProjectTitle == copt.Project.ProjectTitle && b.Day >= copt.StartDate && b.Day <= copt.EndDate && b.User == copt.UserName select b; } else { coptresults = from Task b in filteredTasks where b.Project.ProjectTitle == copt.Project.ProjectTitle && b.Day >= copt.StartDate && b.Day <= copt.EndDate select b; } } filename = @"\\MATRIXSERVER\Data\01 - CAD SUPPORT FILES\Project Timesheets\" + copt.COPTNumber + ".docx"; } else //monthly tasks { if (copt.EndDate == null) { coptresults = from Task b in tasks where b.Day >= copt.StartDate && b.User == copt.UserName orderby b.Day select b; } else { coptresults = from Task b in tasks where b.Day >= copt.StartDate && b.Day <= copt.EndDate && b.User == copt.UserName orderby b.Day select b; } filename = @"\\MATRIXSERVER\Data\01 - CAD SUPPORT FILES\Project Timesheets\" + copt.COPTNumber + ".docx"; } //var coptresults = from Task t in tasks // select t; Word.Export(doc, "DataTable", 2, false, coptresults, mappings); break; #endregion case "": break; } #endregion dynamic _word = AutomationFactory.GetObject("Word.Application"); var _doc = _word.ActiveDocument; if (DocumentName == "DDC") { #region "checkboxes" if (LSProp.ProtoTypeProduced == true) { dynamic ccs = _doc.SelectContentControlsByTitle("PrototypeProducedYes"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } ccs = _doc.SelectContentControlsByTitle("PrototypeProducedNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = false; } } else { dynamic ccs = _doc.SelectContentControlsByTitle("PrototypeProducedNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } } if (LSProp.MaterialsCosted == true) { dynamic ccs = _doc.SelectContentControlsByTitle("MaterialsYes"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } ccs = _doc.SelectContentControlsByTitle("MaterialsNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = false; } } else { dynamic ccs = _doc.SelectContentControlsByTitle("MaterialsNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } } if (LSProp.LabourCosted == true) { dynamic ccs = _doc.SelectContentControlsByTitle("LabourCostedYes"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } ccs = _doc.SelectContentControlsByTitle("LabourCostedNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = false; } } else { dynamic ccs = _doc.SelectContentControlsByTitle("LabourCostedNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } } if (LSProp.ClientApproved == true) { dynamic ccs = _doc.SelectContentControlsByTitle("ClientApprovedYes"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } ccs = _doc.SelectContentControlsByTitle("ClientApprovedNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = false; } } else { dynamic ccs = _doc.SelectContentControlsByTitle("ClientApprovedNo"); if (ccs != null) { dynamic cc = ccs[1]; cc.Checked = true; } } #endregion } _doc.SaveAs(filename, 12); if (!File.Exists(filename)) { MessageBox.Show("The created Word File didn't save for some reason, please do a manual saveas to preserve our template!"); } mapContent = null; mappings = null; }