// Convert the timesheet form row items into timesheet time entries. Makes
        // certain assumptions about start times, end times, and group.
        private void PopulateTimesheetEntries(PWATimesheet timesheetForm, Timesheet timesheet)
        {
            timesheet.TotalHours = Convert.ToDouble(convUtil.TimeToDecimal(timesheetForm.totalHours.value));
            var timeEntryList = new List <TimeEntry>();

            if (timesheetForm.timesheet.wasEdited)
            {
                timesheet.Edited = true;
            }

            foreach (var row in timesheetForm.timesheet.value)
            {
                var timeEntry = new TimeEntry();
                try
                {
                    timeEntry.Date = Convert.ToDateTime(row.date);
                }
                catch (FormatException)
                {
                    Console.WriteLine("Hey, {0} is not a valid Date!", row.date);
                    timeEntry.Date = DateTime.Parse("1/1/1900");
                }
                try
                {
                    timeEntry.Hours = double.Parse(convUtil.TimeToDecimal(row.totalHours));
                }
                catch (FormatException)
                {
                    Console.WriteLine("Hey, {0} is not a valid Time!", row.totalHours);
                    timeEntry.Hours = -1;
                }

                timeEntry.Group = row.group.Equals("Yes", StringComparison.CurrentCultureIgnoreCase);

                try
                {
                    timeEntry.In = DateTime.Parse(row.starttime);
                }
                catch (FormatException)
                {
                    Console.WriteLine("Hey, {0} is not a valid Time!", row.starttime);
                    timeEntry.In = DateTime.Parse("12:00 AM");
                }

                try
                {
                    timeEntry.Out = DateTime.Parse(row.endtime);
                }
                catch (FormatException)
                {
                    Console.WriteLine("Hey, {0} is not a valid Time!", row.endtime);
                    timeEntry.Out = DateTime.Parse("12:00 AM");
                }

                timeEntryList.Add(timeEntry);
            }
            timesheet.TimeEntries = timeEntryList;
        }
        public IActionResult SubmitTimesheet([FromBody] PWATimesheet submittedform)
        {
            var       dbutil = new FormToDbUtil(_subcontext, _context);
            Timesheet ts     = dbutil.PopulateTimesheet(submittedform);

            var submission = _subcontext;

            submission.Add(ts);
            submission.SaveChanges();

            // Do something with form
            Response.Headers.Add("Access-Control-Allow-Origin", "*");
            Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
            return(Json(new { response = "ok" }));
        }
        // Give a timesheetform obj, get back a partially populated timesheet obj.
        // TODO fix UriString, confirm vals for // marks
        public Timesheet PopulateTimesheet(PWATimesheet tsf, Timesheet tsheet = null)
        {
            if (tsheet == null)
            {
                tsheet = new Timesheet();
            }

            tsheet.ClientName      = tsf.clientName.value;
            tsheet.ClientPrime     = tsf.prime.value;
            tsheet.ProviderName    = tsf.providerName.value;
            tsheet.ProviderId      = tsf.providerNum.value;
            tsheet.ServiceGoal     = tsf.serviceGoal.value;
            tsheet.ProgressNotes   = tsf.progressNotes.value;
            tsheet.FormType        = tsf.serviceAuthorized.value;
            tsheet.RejectionReason = "";              //
            tsheet.Submitted       = DateTime.UtcNow; //
            tsheet.LockInfo        = null;
            tsheet.UserActivity    = "";              //
            tsheet.Edited          = convUtil.wasPWAedited(tsf);

            tsheet.UriString = _sscontext.Stagings.Find(tsf.id).UriString;
            PopulateTimesheetEntries(tsf, tsheet);
            return(tsheet);
        }