private void saveActivity()
        {
            bool valid = validateEntry();

            if (!valid)
            {
                return;
            }

            //Need to create the service sheet / day entities and save
            ServiceSheetViewModel serviceSheetCreated = new ServiceSheetViewModel(SelectedUser, SelectedActivity, StartDate, EndDate);

            //Now save
            serviceSheetCreated.SaveToModel();
            bool saveSuccessful = DbServiceSheet.saveSheetsAndDays(serviceSheetCreated);

            if (!saveSuccessful)
            {
                MessageBox.Show("Error saving to database.  Need to show error message!");
                return;
            }
            else
            {
                MessageBox.Show("Activity added to database");
            }
        }
 public HolidayAbsenceCreatorViewModel()
 {
     HolidayAbsence = new ServiceSheetViewModel();
     //Setup the data required from the database
     setupUsernameCombobox();
     setupActivityCombobox();
 }
        public static List <ServiceSheetViewModel> loadHolidayAbsenceSheets()
        {
            List <ServiceSheetViewModel> retval = new List <ServiceSheetViewModel>();

            UserViewModel dbUser = getDbUser();

            if (dbUser == null)
            {
                return(null);
            }
            //Downloads the service sheets from the database and creates the vms
            try
            {
                using (var dbContext = new ServiceSheetsEntities())
                {
                    updateContextConnection(dbUser, dbContext);
                    var serviceSheets = from ServiceSheet in dbContext.ServiceSheets
                                        where ServiceSheet.SubmissionNumber < 0
                                        select ServiceSheet;
                    retval = ServiceSheetViewModel.loadFromModel(serviceSheets);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(null);
            }
            return(retval);
        }
Beispiel #4
0
        public void CountNumberOfBarrierPayments()
        {
            var expectedResult = 2;
            var dayOneBP       = true;
            var dayTwoBP       = true;
            var dayThreeBp     = false;

            var serviceSheetVm = new ServiceSheetViewModel();
            var dayOne         = new ServiceDayViewModel(new DateTime(), new DateTime(), new DateTime(), new DateTime(),
                                                         0, false, false, dayOneBP, 0, 0, 0, 0, "", "", new DateTime(), serviceSheetVm);

            var dayTwo = new ServiceDayViewModel(new DateTime(), new DateTime(), new DateTime(), new DateTime(),
                                                 0, false, false, dayTwoBP, 0, 0, 0, 0, "", "", new DateTime(), serviceSheetVm);

            var dayThree = new ServiceDayViewModel(new DateTime(), new DateTime(), new DateTime(), new DateTime(),
                                                   0, false, false, dayThreeBp, 0, 0, 0, 0, "", "", new DateTime(), serviceSheetVm);


            serviceSheetVm.AddServiceDayViewModel(dayOne);
            serviceSheetVm.AddServiceDayViewModel(dayTwo);
            serviceSheetVm.AddServiceDayViewModel(dayThree);

            serviceSheetVm.updateAllTimes();
            var result = serviceSheetVm.TotalBarrierPayments;

            Assert.AreEqual(expectedResult, result);
        }
        public static bool saveSheetsAndDays(ServiceSheetViewModel serviceSheetCreated)
        {
            ObservableCollection <ServiceSheetViewModel> sheetToSave = new ObservableCollection <ServiceSheetViewModel>();

            sheetToSave.Add(serviceSheetCreated);
            bool retval = saveSheetsAndDays(sheetToSave);

            return(retval);
        }
Beispiel #6
0
        public void EngineerFullnameEqualToFirstAndSecond()
        {
            var engFirstName   = "Test";
            var engSurname     = "McTestface";
            var expectedResult = "Test McTestface";

            var serviceSheetVM = new ServiceSheetViewModel();

            serviceSheetVM.UserFirstName = engFirstName;
            serviceSheetVM.UserSurname   = engSurname;
            var result = serviceSheetVM.EngineerFullName;

            Assert.AreEqual(expectedResult, result);
        }
        public Boolean createPdfSheetForSubmission(ServiceSheetViewModel serviceSubmissionSheet)
        {
            Boolean successful = false;

            currentSheet = serviceSubmissionSheet;

            serviceSheetDoc = new Document();

            defineDocumentStyles();
            createSheetTitle();
            createJobDetailsSection();
            createTimesheetSection();
            createServiceReportSection();
            createFollowupSection();
            createSignoffSection();
            createFooter();
            createHeader();
            createWatermark();
            //RT 30/1/17 - Set the page size for each section
            setPageSize();

            PdfDocumentRenderer docRenderer = new PdfDocumentRenderer();

            docRenderer.Document = serviceSheetDoc;
            docRenderer.RenderDocument();

            //RT 5/7/16 - Adding save dialog
            SaveFileDialog saveDialog = new SaveFileDialog();

            saveDialog.Filter   = "pdf files (*.pdf)|*.pdf";
            saveDialog.FileName = "Service report " + serviceSubmissionSheet.SubmissionNumber;
            Nullable <bool> result = saveDialog.ShowDialog();

            if (result == true)
            {
                string filename = saveDialog.FileName;
                docRenderer.Save(filename);
                Process.Start(filename);

                successful = true;
            }
            else
            {
                successful = false;
            }

            return(successful);
        }
        public static bool?checkForClashingDates(DateTime startDate, DateTime endDate, string username)
        {
            //Returns true if a service day exists for between the given dates.
            List <ServiceSheetViewModel> retval = new List <ServiceSheetViewModel>();

            UserViewModel dbUser = getDbUser();

            if (dbUser == null)
            {
                return(null);
            }


            try
            {
                using (var dbContext = new ServiceSheetsEntities())
                {
                    updateContextConnection(dbUser, dbContext);
                    var serviceSheets =
                        from ss in dbContext.ServiceSheets
                        join sd in dbContext.ServiceDays on ss.Id equals sd.ServiceSheetId
                        where ss.Username == username && sd.DtReport >= startDate && sd.DtReport <= endDate
                        select ss;

                    retval = ServiceSheetViewModel.loadFromModel(serviceSheets);
                }
            }
            catch (EntityException entityEx)
            {
                //Something went wrong with the load.  Clear the cache for the username.
                clearCacheDbUsername();
                Console.WriteLine(entityEx.ToString());
                return(null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(null);
            }

            if (retval.Count == 0)
            {
                return(false);
            }
            return(true);
        }
        //private static ServiceSubmissionModel[] parseSubmissions(XElement submissions)
        //RT 12/10/16 - Rewriting to use new EF models
        //private static List<oldServiceSubmissionModel> parseSubmissions(XElement submissions)
        private static List <ServiceSheetViewModel> parseSubmissions(XElement submissions)
        {
            //int noOfSubmissions = 0;
            //noOfSubmissions = submissions.Descendants("Submission").Count();

            List <ServiceSheetViewModel> allSubmissions = new List <ServiceSheetViewModel>();

            //int submissionCounter = 0;

            foreach (XElement submissionXml in submissions.Elements())
            {
                //Load the submission
                ServiceSheetViewModel currentSubmission = createSubmissionForXml(submissionXml);

                allSubmissions.Add(currentSubmission);

                //submissionCounter++;
            }
            return(allSubmissions);
        }
        public static List <ServiceSheetViewModel> downloadServiceSheets(DateTime monthFirstDay, DateTime monthEndDay)
        {
            List <ServiceSheetViewModel> retval = new List <ServiceSheetViewModel>();

            UserViewModel dbUser = getDbUser();

            if (dbUser == null)
            {
                return(null);
            }
            //Downloads the service sheets from the database and creates the vms
            try
            {
                using (var dbContext = new ServiceSheetsEntities())
                {
                    updateContextConnection(dbUser, dbContext);
                    var serviceSheets = from ServiceSheet in dbContext.ServiceSheets
                                        //join sDay in dbContext.ServiceDays
                                        //on ServiceSheet.Id equals sDay.ServiceSheetId
                                        where ServiceSheet.ServiceDays.Any(sDays => sDays.DtReport >= monthFirstDay && sDays.DtReport <= monthEndDay)
                                        select ServiceSheet;
                    retval = ServiceSheetViewModel.loadFromModel(serviceSheets);
                }
            }
            catch (EntityException entityEx)
            {
                //Something went wrong with the load.  Clear the cache for the username.
                clearCacheDbUsername();
                Console.WriteLine(entityEx.ToString());
                return(null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(null);
            }
            return(retval);
        }
        public static List <ServiceSheetViewModel> downloadAllServiceSheets()
        {
            List <ServiceSheetViewModel> retval = new List <ServiceSheetViewModel>();

            UserViewModel dbUser = getDbUser();

            if (dbUser == null)
            {
                return(null);
            }
            //Downloads the service sheets from the database and creates the vms
            try
            {
                using (var dbContext = new ServiceSheetsEntities())
                {
                    updateContextConnection(dbUser, dbContext);
                    var serviceSheets = from ServiceSheet in dbContext.ServiceSheets
                                        where ServiceSheet.SubmissionNumber > 15679
                                        select ServiceSheet;
                    retval = ServiceSheetViewModel.loadFromModel(serviceSheets);
                }
            }
            catch (EntityException entityEx)
            {
                //Something went wrong with the load.  Clear the cache for the username.
                clearCacheDbUsername();
                Console.WriteLine(entityEx.ToString());
                return(null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(null);
            }
            return(retval);
        }
        //private bool createJobCostingSheet(ServiceSubmissionModel submission, string filename)
        private int createJobCostingSheet(ServiceSheetViewModel submission, string filename, bool firstSubmission, int lineNumber)
        {
            Excel.Range range;
            //First Open excel

            if (firstSubmission)
            {
                excelApplication         = new Excel.Application();
                excelApplication.Visible = true;
                excelWorkbook            = excelApplication.Workbooks.Open(filename);

                excelWorksheet = excelWorkbook.ActiveSheet;

                //Add the job title
                string customer       = submission.Customer;
                string machineMake    = submission.MachineMakeModel;
                string serialNumber   = submission.MachineSerial;
                string jobDescription = submission.JobDescription;

                range        = excelWorksheet.Cells[13, 1];
                range.Value2 = string.Concat(customer, " - ", machineMake, " - S/N: ", serialNumber, " - ", jobDescription);

                range        = excelWorksheet.Cells[11, 9];
                range.Value2 = submission.MttJobNumber;
            }
            //Load all the days and loop through them. Output to the sheet
            List <ServiceDayViewModel> serviceDays = submission.AllServiceDays;

            //Need the engineers initials for each row
            string engFirstName = submission.UserFirstName;
            string engSurname   = submission.UserSurname;
            string initials     = string.Concat(engFirstName[0], engSurname[0]);

            int sheetNo = submission.SubmissionNumber;

            int currentSpreadsheetRow;

            if (lineNumber == -1)
            {
                currentSpreadsheetRow = 17;
            }
            else
            {
                currentSpreadsheetRow = lineNumber++;
            }


            foreach (ServiceDayViewModel currentDay in serviceDays)
            {
                range        = excelWorksheet.Cells[currentSpreadsheetRow, 1];
                range.Value2 = currentDay.DtReport;

                string day = currentDay.DtReport.DayOfWeek.ToString();
                range        = excelWorksheet.Cells[currentSpreadsheetRow, 2];
                range.Value2 = day;

                double standardHours = calculateStandardHours(currentDay);
                range        = excelWorksheet.Cells[currentSpreadsheetRow, 3];
                range.Value2 = standardHours;

                double overtimeHours = calculateOvertimeHours(currentDay);
                range        = excelWorksheet.Cells[currentSpreadsheetRow, 4];
                range.Value2 = overtimeHours;

                range        = excelWorksheet.Cells[currentSpreadsheetRow, 5];
                range.Value2 = currentDay.TotalTravelTime;

                bool dailyAllowance      = currentDay.DailyAllowance;
                int  dailyAllowanceValue = convertBoolToIntForAllowances(dailyAllowance);
                range        = excelWorksheet.Cells[currentSpreadsheetRow, 6];
                range.Value2 = dailyAllowanceValue;

                bool overNight = currentDay.OvernightAllowance;
                int  overnightAllowanceValue = convertBoolToIntForAllowances(overNight);
                range        = excelWorksheet.Cells[currentSpreadsheetRow, 7];
                range.Value2 = overnightAllowanceValue;

                range        = excelWorksheet.Cells[currentSpreadsheetRow, 8];
                range.Value2 = currentDay.Mileage;

                range        = excelWorksheet.Cells[currentSpreadsheetRow, 9];
                range.Value2 = initials;

                range        = excelWorksheet.Cells[currentSpreadsheetRow, 10];
                range.Value2 = sheetNo;

                currentSpreadsheetRow++;
            }

            MessageBox.Show("Need to handle bank holidays");

            return(currentSpreadsheetRow);
        }
Beispiel #13
0
        //This class imports the historical data from a csv file and displays it in the application

        public Boolean importCsvData()
        {
            //First get the user to select the file with the data
            string csvFilename = openFilename();

            //RT 18/8/16 - csv filename can return empty string if cancelled.
            if (csvFilename.Equals(""))
            {
                MessageBox.Show("No csv file selected");
                return(false);
            }
            csvTextReader  = File.OpenText(csvFilename);
            csvReaderInput = new CsvReader(csvTextReader);
            csvReaderInput.Configuration.Delimiter = ",";

            //For each record in the csv file, we need to create a submission with all the days
            //Loop through all the rows in the csv import

            //If the row submission no matches the current submission number, then we are loading days.
            //If not, then it it a new submssion

            int currentReadSubmissionNo = -1;

            importedSubmissions = new ObservableCollection <ServiceSheetViewModel>();

            while (csvReaderInput.Read())
            {
                var row          = csvReaderInput.CurrentRecord;
                int submissionNo = Convert.ToInt32(row[2]);

                //If first time through, then set the current submission no
                //Load the first row
                if (currentReadSubmissionNo == -1)
                {
                    currentReadSubmissionNo  = submissionNo;
                    currentServiceSubmission = new ServiceSheetViewModel();
                    loadNewSubmission(row);
                    continue;
                }

                if (currentReadSubmissionNo == submissionNo)
                {
                    loadDayForSubmission(row, currentServiceSubmission);
                }
                else
                {
                    //RT - 20/8/16 - Need to recalculate the times as we have added the last day
                    //RT - 24/11/16 - No we don't, this is done at the end!
                    //currentServiceSubmission.updateTimes();
                    importedSubmissions.Add(currentServiceSubmission);
                    Console.WriteLine("Submission: " + currentReadSubmissionNo + " created");
                    currentReadSubmissionNo  = submissionNo;
                    currentServiceSubmission = new ServiceSheetViewModel();
                    loadNewSubmission(row);
                }
            }

            //RT - 20/8/16 - Need to recalculate the times as we have added the last day
            currentServiceSubmission.updateAllTimes();

            //RT 18/8/16 - Need to save the last submssion
            importedSubmissions.Add(currentServiceSubmission);

            return(true);
        }
Beispiel #14
0
        //RT 28/11/16 - Rewriting this to use the MVVM pattern
        //private void loadDayForSubmission(string[] row, ServiceSheetViewModel currentSubmission)
        //{
        //    string dateFormatMinutes = "d/M/yyyy HH:mm";
        //    string dateFormatSeconds = "d/M/yyyy H:mm:ss";

        //    //Need to set the submission on the service day
        //    ServiceDayViewModel currentDay = new ServiceDayViewModel(currentSubmission);
        //    //The times may be with / without the date, depending on when they were imported.
        //    //Need to load the service date first, in case we need it for the times
        //    string serviceDate = row[40];
        //    currentDay.DtReport = DateTime.ParseExact(serviceDate, "d/M/yyyy", CultureInfo.InvariantCulture);

        //    string travelStartTime = row[26];
        //    try
        //    {
        //        currentDay.TravelStartTime = DateTime.ParseExact(travelStartTime, dateFormatMinutes, CultureInfo.InvariantCulture);
        //    }
        //    catch
        //    {
        //        try
        //        {
        //            currentDay.TravelStartTime = DateTime.ParseExact(travelStartTime, dateFormatSeconds, CultureInfo.InvariantCulture);
        //        }
        //        catch
        //        {
        //            string travelStartIncDate = serviceDate + " " + travelStartTime;
        //            currentDay.TravelStartTime = DateTime.ParseExact(travelStartIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
        //        }
        //    }

        //    string arrivalTimeOnsite = row[27];
        //    try
        //    {
        //        currentDay.ArrivalOnsiteTime = DateTime.ParseExact(arrivalTimeOnsite, dateFormatMinutes, CultureInfo.InvariantCulture);
        //    }
        //    catch
        //    {
        //        try
        //        {
        //            currentDay.ArrivalOnsiteTime = DateTime.ParseExact(arrivalTimeOnsite, dateFormatSeconds, CultureInfo.InvariantCulture);
        //        }
        //        catch
        //        {
        //            string arrivalOnsiteIncDate = serviceDate + " " + arrivalTimeOnsite;
        //            currentDay.ArrivalOnsiteTime = DateTime.ParseExact(arrivalOnsiteIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
        //        }
        //    }

        //    string departureTime = row[28];
        //    try
        //    {
        //        currentDay.DepartSiteTime = DateTime.ParseExact(departureTime, dateFormatMinutes, CultureInfo.InvariantCulture);
        //    }
        //    catch
        //    {
        //        try
        //        {
        //            currentDay.DepartSiteTime = DateTime.ParseExact(departureTime, dateFormatSeconds, CultureInfo.InvariantCulture);
        //        }
        //        catch
        //        {
        //            string departureIncDate = serviceDate + " " + departureTime;
        //            currentDay.DepartSiteTime = DateTime.ParseExact(departureIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
        //        }
        //    }

        //    string travelEndTime = row[29];
        //    try
        //    {
        //        currentDay.TravelEndTime = DateTime.ParseExact(travelEndTime, dateFormatMinutes, CultureInfo.InvariantCulture);
        //    }
        //    catch
        //    {
        //        try
        //        {
        //            currentDay.TravelEndTime = DateTime.ParseExact(travelEndTime, dateFormatSeconds, CultureInfo.InvariantCulture);
        //        }
        //        catch
        //        {
        //            string travelEndIncDate = serviceDate + " " + travelEndTime;
        //            currentDay.TravelEndTime = DateTime.ParseExact(travelEndIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
        //        }
        //    }

        //    currentDay.Mileage = Convert.ToInt32(row[30]);
        //    //try
        //    //{
        //    //    currentDay.ServiceDay.DailyAllowance = Convert.ToBoolean(row[31]);
        //    //}
        //    //catch
        //    //{
        //    //If this fails, then it nust be an integer
        //    //    int dailyAllowance = Convert.ToInt32(row[31]);
        //    //    if (dailyAllowance == 1)
        //    //    {
        //    //        currentDay.ServiceDay.DailyAllowance = true;
        //    //    }
        //    //    else
        //    //    {
        //    //        currentDay.ServiceDay.DailyAllowance = false;
        //    //    }
        //    ////}

        //    currentDay.DailyAllowance = Convert.ToBoolean(row[31]);

        //    //try
        //    //{
        //    //    currentDay.ServiceDay.OvernightAllowance = Convert.ToBoolean(row[32]);
        //    //}
        //    //catch
        //    //{
        //    //    //If this fails, then it nust be an integer
        //    //    int overnightAllowance = Convert.ToInt32(row[32]);
        //    //    if (overnightAllowance == 1)
        //    //    {
        //    //        currentDay.ServiceDay.OvernightAllowance = true;
        //    //    }
        //    //    else
        //    //    {
        //    //        currentDay.ServiceDay.OvernightAllowance = false;
        //    //    }
        //    //}
        //    currentDay.OvernightAllowance = Convert.ToBoolean(row[32]);
        //    //try
        //    //{
        //    //    currentDay.ServiceDay.BarrierPayment = Convert.ToBoolean(row[33]);
        //    //}
        //    //catch
        //    //{
        //    //    //If this fails, then it nust be an integer
        //    //    int barrierPayment = Convert.ToInt32(row[33]);
        //    //    if (barrierPayment == 1)
        //    //    {
        //    //        currentDay.ServiceDay.BarrierPayment = true;
        //    //    }
        //    //    else
        //    //    {
        //    //        currentDay.ServiceDay.BarrierPayment = false;
        //    //    }
        //    //}
        //    currentDay.BarrierPayment = Convert.ToBoolean(row[33]);

        //    currentDay.TravelTimeToSite = Convert.ToDouble(row[34]);
        //    currentDay.TravelTimeFromSite = Convert.ToDouble(row[35]);
        //    currentDay.TotalTravelTime = Convert.ToDouble(row[36]);
        //    currentDay.TotalTimeOnsite = Convert.ToDouble(row[37]);
        //    currentDay.DailyReport = row[38];
        //    currentDay.PartsSupplied = row[39];

        //    //RT 16/8/16 - Saving the timesheet
        //    //currentSubmission.AllServiceDayVMs.
        //}
        private void loadDayForSubmission(string[] row, ServiceSheetViewModel currentSubmission)
        {
            //RT 6/12/16 - If the first date is blank, then we are loading a csv created with this application
            bool   serviceReaderCsv = false;
            string startDateStr     = row[0];

            if (String.IsNullOrEmpty(startDateStr))
            {
                serviceReaderCsv = true;
            }

            string dateFormatMinutes = "d/M/yyyy HH:mm:ss";
            //RT 6/12/16 - varable no longer needed.  Added by accident
            //string dateFormatSeconds = "d/M/yyyy H:mm:ss";

            //Need to set the submission on the service day
            //ServiceDayViewModel currentDay = new ServiceDayViewModel(currentSubmission);
            //The times may be with / without the date, depending on when they were imported.
            //Need to load the service date first, in case we need it for the times
            string serviceDate = row[40];
            //RT 6/12/16 - From canvas csv, this is a date, datetime from service reader
            DateTime dtReport;

            if (serviceReaderCsv)
            {
                dtReport = DateTime.ParseExact(serviceDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            }
            else
            {
                dtReport = DateTime.ParseExact(serviceDate, "d/M/yyyy", CultureInfo.InvariantCulture);
            }

            string travelStartTime = row[26];

            //RT 6/12/16 - Canvas created csv's are time only.  Service Reader ones include
            DateTime dtTravelStart;

            if (serviceReaderCsv)
            {
                dtTravelStart = DateTime.ParseExact(travelStartTime, "HH:mm", CultureInfo.InvariantCulture);
            }
            else
            {
                string travelStartIncDate = serviceDate + " " + travelStartTime;
                dtTravelStart = DateTime.ParseExact(travelStartIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            }
            //try
            //{
            //    dtTravelStart = DateTime.ParseExact(travelStartTime, dateFormatMinutes, CultureInfo.InvariantCulture);
            //}
            //catch
            //{
            //    try
            //    {
            //        dtTravelStart = DateTime.ParseExact(travelStartTime, dateFormatSeconds, CultureInfo.InvariantCulture);
            //    }
            //    catch
            //    {
            //        string travelStartIncDate = serviceDate + " " + travelStartTime;
            //        dtTravelStart = DateTime.ParseExact(travelStartIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            //    }
            //}

            string   arrivalTimeOnsite = row[27];
            DateTime dtArrivalOnsite;

            if (serviceReaderCsv)
            {
                dtArrivalOnsite = DateTime.ParseExact(arrivalTimeOnsite, "HH:mm", CultureInfo.InvariantCulture);
            }
            else
            {
                string arrivalOnsiteIncDate = serviceDate + " " + arrivalTimeOnsite;
                dtArrivalOnsite = DateTime.ParseExact(arrivalOnsiteIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            }

            //try
            //{
            //    dtArrivalOnsite = DateTime.ParseExact(arrivalTimeOnsite, dateFormatMinutes, CultureInfo.InvariantCulture);
            //}
            //catch
            //{
            //    try
            //    {
            //        dtArrivalOnsite = DateTime.ParseExact(arrivalTimeOnsite, dateFormatSeconds, CultureInfo.InvariantCulture);
            //    }
            //    catch
            //    {
            //        string arrivalOnsiteIncDate = serviceDate + " " + arrivalTimeOnsite;
            //        dtArrivalOnsite = DateTime.ParseExact(arrivalOnsiteIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            //    }
            //}

            string   departureTime = row[28];
            DateTime dtDeparture;

            if (serviceReaderCsv)
            {
                dtDeparture = DateTime.ParseExact(departureTime, "HH:mm", CultureInfo.InvariantCulture);
            }
            else
            {
                string departureIncDate = serviceDate + " " + departureTime;
                dtDeparture = DateTime.ParseExact(departureIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            }
            //try
            //{
            //    dtDeparture = DateTime.ParseExact(departureTime, dateFormatMinutes, CultureInfo.InvariantCulture);
            //}
            //catch
            //{
            //    try
            //    {
            //        dtDeparture = DateTime.ParseExact(departureTime, dateFormatSeconds, CultureInfo.InvariantCulture);
            //    }
            //    catch
            //    {
            //        string departureIncDate = serviceDate + " " + departureTime;
            //        dtDeparture = DateTime.ParseExact(departureIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            //    }
            //}

            string   travelEndTime = row[29];
            DateTime dtTravelEnd;

            if (serviceReaderCsv)
            {
                dtTravelEnd = DateTime.ParseExact(travelEndTime, "HH:mm", CultureInfo.InvariantCulture);
            }
            else
            {
                string travelEndIncDate = serviceDate + " " + travelEndTime;
                dtTravelEnd = DateTime.ParseExact(travelEndIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            }
            //try
            //{
            //    dtTravelEnd = DateTime.ParseExact(travelEndTime, dateFormatMinutes, CultureInfo.InvariantCulture);
            //}
            //catch
            //{
            //    try
            //    {
            //        dtTravelEnd = DateTime.ParseExact(travelEndTime, dateFormatSeconds, CultureInfo.InvariantCulture);
            //    }
            //    catch
            //    {
            //        string travelEndIncDate = serviceDate + " " + travelEndTime;
            //        dtTravelEnd = DateTime.ParseExact(travelEndIncDate, dateFormatMinutes, CultureInfo.InvariantCulture);
            //    }
            //}

            int mileage = Convert.ToInt32(row[30]);
            //RT 6/12/16  - The allowances are 1/0.  Need to convert to bool
            string daStr = row[31];
            bool   dailyAllowance;

            if (daStr.Equals("1"))
            {
                dailyAllowance = true;
            }
            else
            {
                dailyAllowance = false;
            }
            //bool dailyAllowance = Convert.ToBoolean(row[31]);
            bool   overnightAllowance;
            string onStr = row[32];

            if (onStr.Equals("1"))
            {
                overnightAllowance = true;
            }
            else
            {
                overnightAllowance = false;
            }
            //bool overnightAllowance = Convert.ToBoolean(row[32]);
            bool   barrierPayment;
            string bpStr = row[33];

            if (bpStr.Equals("1"))
            {
                barrierPayment = true;
            }
            else
            {
                barrierPayment = false;
            }
            //bool barrierPayment = Convert.ToBoolean(row[33]);
            double travelTimeToSite   = Convert.ToDouble(row[34]);
            double travelTimeFromSite = Convert.ToDouble(row[35]);
            double totalTravelTime    = Convert.ToDouble(row[36]);
            double totalTimeOnsite    = Convert.ToDouble(row[37]);
            string dailyReport        = row[38];
            string partsSupplied      = row[39];
            //Now create the serviceDayVM
            ServiceDayViewModel retval = new ServiceDayViewModel(dtTravelStart, dtArrivalOnsite, dtDeparture, dtTravelEnd, mileage, dailyAllowance, overnightAllowance, barrierPayment,
                                                                 travelTimeToSite, travelTimeFromSite, totalTravelTime, totalTimeOnsite, dailyReport, partsSupplied, dtReport, currentSubmission);

            currentSubmission.AddServiceDayViewModel(retval);
            //This doesn't need to return anything, as the day has been set on the submission.
        }
        private void createExportLinesForSubmission(ServiceSheetViewModel submission)
        {
            //A line is created for each service day, not submission, so we need to go through the number of days.
            //There will be multiple duplicated fields.
            List <ServiceDayViewModel> allServiceDays = submission.AllServiceDays;

            //ObservableCollection<ServiceDayViewModel> serviceDays = submission.AllServiceDayVMs;

            foreach (ServiceDayViewModel day in allServiceDays)
            {
                //extract the sections from the service sheet that go into the CSV export
                //Start date and end date are not taken - They only appear in the csv export
                csvWriterOutput.WriteField("");
                csvWriterOutput.WriteField("");
                int submissionNo = submission.SubmissionNumber;
                csvWriterOutput.WriteField(submissionNo);
                //RT 23/1/17 - No longer set this manually
                string appName = submission.AppName;
                csvWriterOutput.WriteField(appName);
                string username = submission.Username;
                csvWriterOutput.WriteField(username);
                string userLastName = submission.UserSurname;
                csvWriterOutput.WriteField(userLastName);
                string userFirstName = submission.UserFirstName;
                csvWriterOutput.WriteField(userFirstName);
                string responseId = submission.CanvasResponseId;
                csvWriterOutput.WriteField(responseId);
                DateTime responseDate = submission.DtResponse;
                csvWriterOutput.WriteField(responseDate);
                DateTime dtDevice = submission.DtDevice;
                csvWriterOutput.WriteField(dtDevice);
                //RT 23/1/17 - Set the form name
                string submissionFormName = submission.SubmissionFormName;
                csvWriterOutput.WriteField(submissionFormName);
                int formVersion = submission.SubmissionFormVersion;
                csvWriterOutput.WriteField(formVersion);
                string customer = submission.Customer;
                csvWriterOutput.WriteField(customer);
                string address1 = submission.AddressLine1;
                csvWriterOutput.WriteField(address1);
                string address2 = submission.AddressLine2;
                csvWriterOutput.WriteField(address2);
                string townCity = submission.TownCity;
                csvWriterOutput.WriteField(townCity);
                string postcode = submission.Postcode;
                csvWriterOutput.WriteField(postcode);
                string customerContact = submission.CustomerContact;
                csvWriterOutput.WriteField(customerContact);
                string customerPhone = submission.CustomerPhoneNo;
                csvWriterOutput.WriteField(customerPhone);
                string makeModel = submission.MachineMakeModel;
                csvWriterOutput.WriteField(makeModel);
                string serialNo = submission.MachineSerial;
                csvWriterOutput.WriteField(serialNo);
                string cncControl = submission.CncControl;
                csvWriterOutput.WriteField(cncControl);
                DateTime dtStart = submission.DtJobStart;
                csvWriterOutput.WriteField(dtStart);
                string orderNo = submission.CustomerOrderNo;
                csvWriterOutput.WriteField(orderNo);
                string mttJobNo = submission.MttJobNumber;
                csvWriterOutput.WriteField(mttJobNo);
                string jobDescription = submission.JobDescription;
                csvWriterOutput.WriteField(jobDescription);

                //ServiceDayViewModel currentDay = day;
                createExportLineForDay(day);

                double totalTimeOnsite = submission.JobTotalTimeOnsite;
                csvWriterOutput.WriteField(totalTimeOnsite);
                double totalTravelTime = submission.JobTotalTravelTime;
                csvWriterOutput.WriteField(totalTravelTime);
                double mileage = submission.JobTotalMileage;
                csvWriterOutput.WriteField(mileage);
                double totalDailyAllowances = submission.TotalDailyAllowances;
                csvWriterOutput.WriteField(totalDailyAllowances);
                double totalOvernightAllowances = submission.TotalOvernightAllowances;
                csvWriterOutput.WriteField(totalOvernightAllowances);
                double totalBarrierPayments = submission.TotalBarrierPayments;
                csvWriterOutput.WriteField(totalBarrierPayments);
                string jobStatus = submission.JobStatus;
                csvWriterOutput.WriteField(jobStatus);
                string finalJobReport = submission.FinalJobReport;
                csvWriterOutput.WriteField(finalJobReport);
                //Follow up work field is blank
                csvWriterOutput.WriteField("");
                string additionalFaultsFound = submission.AdditionalFaults;
                csvWriterOutput.WriteField(additionalFaultsFound);
                Boolean followupWorkQuote = submission.QuoteRequired;
                csvWriterOutput.WriteField(followupWorkQuote);
                string partsForFollowup = submission.FollowUpPartsRequired;
                csvWriterOutput.WriteField(partsForFollowup);
                //Images for follow-up work - Doesn't need to be set
                csvWriterOutput.WriteField("");
                //RT 11/8/2016 - Adding in the start of the image url.
                //RT 23/11/16 - Changing this to a method
                writeUrl(submission.Image1Url);
                //string imageUrlStart = "http://www.gocanvas.com/values/";
                //string image1 = imageUrlStart + submission.Image1Url;
                //csvWriterOutput.WriteField(image1);
                writeUrl(submission.Image2Url);
                //string image2 = imageUrlStart + submission.Image2Url;
                //csvWriterOutput.WriteField(image2);
                writeUrl(submission.Image3Url);
                //string image3 = imageUrlStart + submission.Image3Url;
                //csvWriterOutput.WriteField(image3);
                //string image4 = imageUrlStart + submission.Image4Url;
                writeUrl(submission.Image4Url);
                //csvWriterOutput.WriteField(image4);
                //string image5 = imageUrlStart + submission.Image5Url;
                writeUrl(submission.Image5Url);
                //csvWriterOutput.WriteField(image5);
                //Certify is next - don't set
                csvWriterOutput.WriteField("");
                //string customerSignature = imageUrlStart + submission.CustomerSignatureUrl;
                //csvWriterOutput.WriteField(customerSignature);
                writeUrl(submission.CustomerSignatureUrl);
                string customerName = submission.CustomerName;
                csvWriterOutput.WriteField(customerName);
                DateTime dtSigned = submission.DtSigned;
                csvWriterOutput.WriteField(dtSigned);
                //string mttSignature = imageUrlStart + submission.MttEngSignatureUrl;
                //csvWriterOutput.WriteField(mttSignature);
                writeUrl(submission.MttEngSignatureUrl);
                csvWriterOutput.NextRecord();
            }

            //int noOfDays = serviceDays.Count;

            //for (int counter = 0; counter < noOfDays ; counter++)
            //{
            //    //extract the sections from the service sheet that go into the CSV export
            //    //Start date and end date are not taken - They only appear in the csv export
            //    csvWriterOutput.WriteField("");
            //    csvWriterOutput.WriteField("");
            //    int submissionNo = submission.SubmissionNumber;
            //    csvWriterOutput.WriteField(submissionNo);
            //    //Export app name - set manually
            //    csvWriterOutput.WriteField("Service Sheet");
            //    string username = submission.Username;
            //    csvWriterOutput.WriteField(username);
            //    string userLastName = submission.UserSurname;
            //    csvWriterOutput.WriteField(userLastName);
            //    string userFirstName = submission.UserFirstName;
            //    csvWriterOutput.WriteField(userFirstName);
            //    string responseId = submission.ResponseId;
            //    csvWriterOutput.WriteField(responseId);
            //    DateTime responseDate = submission.DtResponse;
            //    csvWriterOutput.WriteField(responseDate);
            //    DateTime dtDevice = submission.DtDevice;
            //    csvWriterOutput.WriteField(dtDevice);
            //    //Submission form name set manually
            //    csvWriterOutput.WriteField("Service Sheet");
            //    int formVersion = submission.SubmissionVersion;
            //    csvWriterOutput.WriteField(formVersion);
            //    string customer = submission.Customer;
            //    csvWriterOutput.WriteField(customer);
            //    string address1 = submission.AddressLine1;
            //    csvWriterOutput.WriteField(address1);
            //    string address2 = submission.AddressLine2;
            //    csvWriterOutput.WriteField(address2);
            //    string townCity = submission.TownCity;
            //    csvWriterOutput.WriteField(townCity);
            //    string postcode = submission.Postcode;
            //    csvWriterOutput.WriteField(postcode);
            //    string customerContact = submission.CustomerContact;
            //    csvWriterOutput.WriteField(customerContact);
            //    string customerPhone = submission.CustomerPhone;
            //    csvWriterOutput.WriteField(customerPhone);
            //    string makeModel = submission.MachineMakeModel;
            //    csvWriterOutput.WriteField(makeModel);
            //    string serialNo = submission.MachineSerialNo;
            //    csvWriterOutput.WriteField(serialNo);
            //    string cncControl = submission.MachineController;
            //    csvWriterOutput.WriteField(cncControl);
            //    DateTime dtStart = submission.JobStartDate;
            //    csvWriterOutput.WriteField(dtStart);
            //    string orderNo = submission.CustomerOrderNo;
            //    csvWriterOutput.WriteField(orderNo);
            //    string mttJobNo = submission.MttJobNo;
            //    csvWriterOutput.WriteField(mttJobNo);
            //    string jobDescription = submission.JobDescription;
            //    csvWriterOutput.WriteField(jobDescription);

            //    ServiceDayViewModel currentDay = serviceDays[counter];
            //    createExportLineForDay(currentDay);

            //    double totalTimeOnsite = submission.TotalTimeOnsite;
            //    csvWriterOutput.WriteField(totalTimeOnsite);
            //    double totalTravelTime = submission.TotalTravelTime;
            //    csvWriterOutput.WriteField(totalTravelTime);
            //    double mileage = submission.TotalMileage;
            //    csvWriterOutput.WriteField(mileage);
            //    double totalDailyAllowances = submission.TotalDailyAllowances;
            //    csvWriterOutput.WriteField(totalDailyAllowances);
            //    double totalOvernightAllowances = submission.TotalOvernightAllowances;
            //    csvWriterOutput.WriteField(totalOvernightAllowances);
            //    double totalBarrierPayments = submission.TotalBarrierPayments;
            //    csvWriterOutput.WriteField(totalBarrierPayments);
            //    string jobStatus = submission.JobStatus;
            //    csvWriterOutput.WriteField(jobStatus);
            //    string finalJobReport = submission.FinalJobReport;
            //    csvWriterOutput.WriteField(finalJobReport);
            //    //Follow up work field is blank
            //    csvWriterOutput.WriteField("");
            //    string additionalFaultsFound = submission.AdditionalFaultsFound;
            //    csvWriterOutput.WriteField(additionalFaultsFound);
            //    Boolean followupWorkQuote = submission.QuoteRequired;
            //    csvWriterOutput.WriteField(followupWorkQuote);
            //    string partsForFollowup = submission.PartsForFollowup;
            //    csvWriterOutput.WriteField(partsForFollowup);
            //    //Images for follow-up work - Doesn't need to be set
            //    csvWriterOutput.WriteField("");
            //    //RT 11/8/2016 - Adding in the start of the image url.
            //    //RT 23/11/16 - Changing this to a method
            //    writeUrl(submission.Image1Url);
            //    //string imageUrlStart = "http://www.gocanvas.com/values/";
            //    //string image1 = imageUrlStart + submission.Image1Url;
            //    //csvWriterOutput.WriteField(image1);
            //    writeUrl(submission.Image2Url);
            //    //string image2 = imageUrlStart + submission.Image2Url;
            //    //csvWriterOutput.WriteField(image2);
            //    writeUrl(submission.Image3Url);
            //    //string image3 = imageUrlStart + submission.Image3Url;
            //    //csvWriterOutput.WriteField(image3);
            //    //string image4 = imageUrlStart + submission.Image4Url;
            //    writeUrl(submission.Image4Url);
            //    //csvWriterOutput.WriteField(image4);
            //    //string image5 = imageUrlStart + submission.Image5Url;
            //    writeUrl(submission.Image5Url);
            //    //csvWriterOutput.WriteField(image5);
            //    //Certify is next - don't set
            //    csvWriterOutput.WriteField("");
            //    //string customerSignature = imageUrlStart + submission.CustomerSignatureUrl;
            //    //csvWriterOutput.WriteField(customerSignature);
            //    writeUrl(submission.CustomerSignatureUrl);
            //    string customerName = submission.CustomerSignedName;
            //    csvWriterOutput.WriteField(customerName);
            //    DateTime dtSigned = submission.DtSigned;
            //    csvWriterOutput.WriteField(dtSigned);
            //    //string mttSignature = imageUrlStart + submission.MttEngSignatureUrl;
            //    //csvWriterOutput.WriteField(mttSignature);
            //    writeUrl(submission.MttEngSignatureUrl);
            //    csvWriterOutput.NextRecord();
            //}
        }
Beispiel #16
0
        //private ServiceDay sd;

        //Class constructors
        public ServiceDayViewModel(DateTime dtTravelStart, DateTime dtArrivalOnsite, DateTime dtDepartSite, DateTime dtTravelEnd, int mileageEntered, bool dailyAllowanceEntered,
                                   bool overnightAllowanceEntered, bool barrierPaymentEntered, double travelTimeToSiteEntered, double travelTimeFromSiteEntered, double totalTravelTimeEntered, double timeOnsiteEntered, string dailyReportEntered,
                                   string partsSuppliedEntered, DateTime dtServiceDateEntered, ServiceSheetViewModel parentVM)
        {
            this.TravelStartTime      = dtTravelStart;
            this.ArrivalOnsiteTime    = dtArrivalOnsite;
            this.DepartureSiteTime    = dtDepartSite;
            this.TravelEndTime        = dtTravelEnd;
            this.Mileage              = mileageEntered;
            this.DailyAllowance       = dailyAllowanceEntered;
            this.OvernightAllowance   = overnightAllowanceEntered;
            this.BarrierPayment       = barrierPaymentEntered;
            this.TravelTimeToSite     = travelTimeToSiteEntered;
            this.TravelTimeFromSite   = travelTimeFromSiteEntered;
            this.TotalTravelTime      = totalTravelTimeEntered;
            this.TotalOnsiteTime      = timeOnsiteEntered;
            this.DailyReport          = dailyReportEntered;
            this.PartsSuppliedToday   = partsSuppliedEntered;
            this.DtReport             = dtServiceDateEntered;
            this.ParentServiceSheetVM = parentVM;
        }
        //public static oldServiceSubmissionModel createSubmissionForXml(XElement submissionXml)
        //RT  - 29/11/16 - Rewriting to use the VM
        public static ServiceSheetViewModel createSubmissionForXml(XElement submissionXml)
        {
            //ServiceSheetViewModel retval = new ServiceSheetViewModel();
            //ServiceSheet serviceSheetReturn = new ServiceSheet();
            int submissionNumberEntered = Int32.Parse(submissionXml.Element(SUBMISSION_NUMBER).Value);
            //RT 11/8/16 - Adding in the response id
            string canvasResponseIdEntered = submissionXml.Element(RESPONSE_ID).Value;
            //Adding response date time
            string   responseDateStr   = submissionXml.Element(RESPONSE_DATE_TIME).Value;
            DateTime dtResponseEntered = Convert.ToDateTime(responseDateStr);
            //Adding device date
            string   deviceDateStr   = submissionXml.Element(DEVICE_DATE_TIME).Value;
            DateTime dtDeviceEntered = Convert.ToDateTime(deviceDateStr);
            //Submission version is in the form element
            XElement formDetailsXml = submissionXml.Element(FORM);
            //RT 23/1/17 - Adding app and form names
            //The app name isn't contained in the XML, but won't change.
            string submissionAppName            = "Service Sheet";
            string submissionFormName           = formDetailsXml.Element(SUBMISSION_FORM_NAME).Value;
            int    submissionFormVersionEntered = Int32.Parse(formDetailsXml.Element(SUBMISSION_VERSION).Value);
            string usernameEntered      = submissionXml.Element(USERNAME).Value;
            string userFirstNameEntered = submissionXml.Element(FIRST_NAME).Value;
            string userSurnameEntered   = submissionXml.Element(SURNAME).Value;

            string   customerEntered         = "";
            string   addressLine1Entered     = "";
            string   addressLine2Entered     = "";
            string   townCityEntered         = "";
            string   postcodeEntered         = "";
            string   customerContactEntered  = "";
            string   customerPhoneNoEntered  = "";
            string   machineMakeModelEntered = "";
            string   machineSerialEntered    = "";
            string   cncControlEntered       = "";
            string   jobStartStr             = "";
            DateTime dtJobStartEntered       = new DateTime();
            string   customerOrderNoEntered  = "";
            string   mttJobNumberEntered     = "";
            string   jobDescriptionEntered   = "";
            double   jobTotalTimeOnsiteEntered;
            double   jobTotalTravelTimeEntered;
            int      mileageEntered;
            int      totalDaEntered;
            int      totalOaEntered;
            int      totalBpEntered;
            string   jobStatusEntered        = "";
            string   finalJobReportEntered   = "";
            string   additionalFaultsEntered = "";
            bool     quoteRequiredEntered;
            string   followUpPartsRequiredEntered = "";
            string   image1UrlEntered             = "";
            string   image2UrlEntered             = "";
            string   image3UrlEntered             = "";
            string   image4UrlEntered             = "";
            string   image5UrlEntered             = "";
            string   customerSignatureUrlEntered  = "";
            string   customerNameEntered          = "";
            DateTime dtSignedEntered;
            string   mttEngSignatureUrlEntered = "";
            List <ServiceDayViewModel> dayVMs  = null;

            XElement sectionsXml = submissionXml.Element(SECTIONS);

            // Loop through the sections
            foreach (XElement sectionXml in sectionsXml.Elements())
            {
                string sectionName = sectionXml.Element(SECTION_NAME).Value;
                if (sectionName.Equals(JOB_DETAILS))
                {
                    XElement screensXml   = sectionXml.Element(SCREENS);
                    XElement screenXml    = screensXml.Element(SCREEN);
                    XElement responsesXml = screenXml.Element(RESPONSES);
                    //Parse the job details

                    customerEntered         = xmlResult(CUSTOMER, responsesXml);
                    addressLine1Entered     = xmlResult(ADDRESS_1, responsesXml);
                    addressLine2Entered     = xmlResult(ADDRESS_2, responsesXml);
                    townCityEntered         = xmlResult(TOWN_CITY, responsesXml);
                    postcodeEntered         = xmlResult(POSTCODE, responsesXml);
                    customerContactEntered  = xmlResult(CUSTOMER_CONTACT, responsesXml);
                    customerPhoneNoEntered  = xmlResult(CUSTOMER_PHONE, responsesXml);
                    machineMakeModelEntered = xmlResult(MACHINE_MAKE_MODEL, responsesXml);
                    machineSerialEntered    = xmlResult(SERIAL_NUMBER, responsesXml);

                    cncControlEntered      = xmlResult(MACHINE_CONTROL, responsesXml);
                    jobStartStr            = xmlResult(JOB_START_DATE, responsesXml);
                    dtJobStartEntered      = Convert.ToDateTime(jobStartStr);
                    customerOrderNoEntered = xmlResult(CUSTOMER_ORDER, responsesXml);
                    mttJobNumberEntered    = xmlResult(MTT_JOB_NO, responsesXml);
                    jobDescriptionEntered  = xmlResult(JOB_DESC, responsesXml);
                }
                else if (sectionName.Equals(TIME_SHEET))
                {
                    XElement screensXml        = sectionXml.Element(SCREENS);
                    XElement screenXml         = screensXml.Element(SCREEN);
                    XElement responseGroupsXml = screenXml.Element(RESPONSE_GROUPS);
                    //retval.ServiceTimesheets = ServiceDay.createDays(responseGroupsXml);
                    dayVMs = createDays(responseGroupsXml);
                }
                else if (sectionName.Equals(JOB_SIGNOFF))
                {
                    XElement screensXml   = sectionXml.Element(SCREENS);
                    XElement screenXml    = screensXml.Element(SCREEN);
                    XElement responsesXml = screenXml.Element(RESPONSES);

                    jobTotalTimeOnsiteEntered = Convert.ToDouble(xmlResult(JOB_TOTAL_TIME_ONSITE, responsesXml));
                    jobTotalTravelTimeEntered = Convert.ToDouble(xmlResult(TOTAL_TRAVEL_TIME, responsesXml));

                    //RT 13/10/16 - Mileage, daily/overnight and BP are int, although canvas returns a string like a double.  There will never be a decimal point in them
                    double mileageDouble = Convert.ToDouble(xmlResult(TOTAL_MILEAGE, responsesXml));
                    mileageEntered = (int)mileageDouble;
                    double totalDaDouble = Convert.ToDouble(xmlResult(TOTAL_DAILY_ALLOWANCES, responsesXml));
                    totalDaEntered = (int)totalDaDouble;
                    double totalOaDouble = Convert.ToDouble(xmlResult(TOTAL_OVERNIGHT_ALLOWANCES, responsesXml));
                    totalOaEntered = (int)totalOaDouble;
                    double totalBpDouble = Convert.ToDouble(xmlResult(TOTAL_BARRIER_PAYMENTS, responsesXml));
                    totalBpEntered               = (int)totalBpDouble;
                    jobStatusEntered             = xmlResult(JOB_STATUS, responsesXml);
                    finalJobReportEntered        = xmlResult(FINAL_JOB_REPORT, responsesXml);
                    additionalFaultsEntered      = xmlResult(ADDITIONAL_FAULTS_FOUND, responsesXml);
                    quoteRequiredEntered         = Convert.ToBoolean(xmlResult(QUOTE_REQUIRED, responsesXml));
                    followUpPartsRequiredEntered = xmlResult(FOLLOWUP_PARTS, responsesXml);
                    image1UrlEntered             = xmlResult(IMAGE_1_URL, responsesXml);
                    image2UrlEntered             = xmlResult(IMAGE_2_URL, responsesXml);
                    image3UrlEntered             = xmlResult(IMAGE_3_URL, responsesXml);
                    image4UrlEntered             = xmlResult(IMAGE_4_URL, responsesXml);
                    image5UrlEntered             = xmlResult(IMAGE_5_URL, responsesXml);
                    customerSignatureUrlEntered  = xmlResult(CUSTOMER_SIGNATURE, responsesXml);
                    customerNameEntered          = xmlResult(CUSTOMER_NAME, responsesXml);
                    dtSignedEntered              = Convert.ToDateTime(xmlResult(DATE_SIGNED, responsesXml));
                    mttEngSignatureUrlEntered    = xmlResult(MTT_ENG_SIGNATURE, responsesXml);

                    //Now we create the Service Sheet VM
                    ServiceSheetViewModel retval = new ServiceSheetViewModel(submissionNumberEntered, submissionAppName, userFirstNameEntered, userSurnameEntered, canvasResponseIdEntered, dtResponseEntered,
                                                                             dtDeviceEntered, submissionFormName, submissionFormVersionEntered, customerEntered, addressLine1Entered, addressLine2Entered, townCityEntered, postcodeEntered, customerContactEntered,
                                                                             customerPhoneNoEntered, machineMakeModelEntered, machineSerialEntered, cncControlEntered, dtJobStartEntered, customerOrderNoEntered, mttJobNumberEntered, jobDescriptionEntered,
                                                                             jobTotalTimeOnsiteEntered, jobTotalTravelTimeEntered, mileageEntered, totalDaEntered, totalOaEntered, totalBpEntered, jobStatusEntered, finalJobReportEntered, additionalFaultsEntered,
                                                                             quoteRequiredEntered, followUpPartsRequiredEntered, image1UrlEntered, image2UrlEntered, image3UrlEntered, image4UrlEntered, image5UrlEntered, customerSignatureUrlEntered, customerNameEntered, dtSignedEntered,
                                                                             mttEngSignatureUrlEntered, dayVMs, usernameEntered);
                    retval.SaveToModel();

                    return(retval);
                }
                else
                {
                    new Exception("Unknown Canvas Data Section");
                }
            }

            //If we get to here, then an error has occurred.
            return(null);
            //retval.ServiceSubmission = serviceSheetReturn;
            //return retval;
        }