public async Task <ActionResult> Create(string weekstart) { //need to add code that disables submit button if TSA exists var username = TempData.Peek("username"); var uri = "api/employee/" + username + "/timesheet/" + weekstart; var request = CreateRequestToService(HttpMethod.Get, uri); try { var response = await HttpClient.SendAsync(request); if (response.StatusCode == System.Net.HttpStatusCode.Forbidden) { return(View("Forbidden")); } if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized) { return(View("Unauthorized")); } if (!response.IsSuccessStatusCode) { return(View("Whoops")); } string jsonString = await response.Content.ReadAsStringAsync(); List <TimeSheets> timeSheet = JsonConvert.DeserializeObject <List <TimeSheets> >(jsonString); if (!timeSheet.Any()) { List <TimeSheets> newTimeSheet = new List <TimeSheets>(); DateTime now = DateTime.Now.Date; while (now.DayOfWeek != DayOfWeek.Sunday) { now = now.AddDays(-1); } for (int i = 0; i < 7; i++) { TimeSheets newTS = new TimeSheets { Date = now, RegularHours = 0, }; newTimeSheet.Add(newTS); now = now.AddDays(1); } newTimeSheet = newTimeSheet.OrderBy(x => x.Date).ToList(); return(View(newTimeSheet)); } //sort timeSheet by date monday-friday timeSheet = timeSheet.OrderBy(x => x.Date).ToList(); //make a call to get gettimesheetapprovalbyweekstart var uri2 = "api/employee/" + username + "/timesheetapproval/" + weekstart; var request2 = CreateRequestToService(HttpMethod.Get, uri2); try { var response2 = await HttpClient.SendAsync(request2); string jsonString2 = await response2.Content.ReadAsStringAsync(); TimeSheetApprovals timeSheetApproval = JsonConvert.DeserializeObject <TimeSheetApprovals>(jsonString2); //need if TSA exists here basically if (timeSheetApproval != null) { return(View("PreviousTimesheet", timeSheet)); } } catch (HttpRequestException ex) { return(View("Whoops")); } catch (ArgumentNullException ex) { List <TimeSheets>[] ArrayOfListOfWeeks = new List <TimeSheets> [0]; // logging return(View(ArrayOfListOfWeeks)); } return(View(timeSheet)); } catch (HttpRequestException ex) { // logging return(View("Error")); } }
//right now the user can create a timesheet based on the current week. it will handle whether they have created a timesheet before //or not. When they submit it will add a TSA to the database or tell them that already submitted their timesheet. //Issues: The fields are always open, so even after submitting the TSA they can change their hours in the DB. //These changes wont be reflected in the timesheetapproval public async Task <ActionResult> Create(List <TimeSheets> timeSheets, string submit) { /* if (TempData.Peek("username") == null) * { * return View("Forbidden"); * }*/ decimal totalhours = 0; foreach (var timesheet in timeSheets) { totalhours = timesheet.RegularHours + totalhours; } if (totalhours > 60.00m) { ModelState.AddModelError(string.Empty, "Can't submit or save a time sheet over 60 hours"); return(View(timeSheets)); } var username = TempData.Peek("username"); var uri = "api/employee/" + username + "/timesheet/" + timeSheets.ElementAt(0).Date.ToString("dd-MM-yyyy"); var request = CreateRequestToService(HttpMethod.Get, uri); try { var response = await HttpClient.SendAsync(request); if (response.StatusCode == System.Net.HttpStatusCode.Forbidden) { return(View("Forbidden")); } if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized) { return(View("Unauthorized")); } if (!response.IsSuccessStatusCode) { return(View("Whoops")); } string jsonString = await response.Content.ReadAsStringAsync(); List <TimeSheets> timeSheet = JsonConvert.DeserializeObject <List <TimeSheets> >(jsonString); if (!timeSheet.Any()) { string jsonPostString = JsonConvert.SerializeObject(timeSheets); var PostUri = "api/employee/" + username + "/timesheet"; var postRequest = CreateRequestToService(HttpMethod.Post, PostUri); postRequest.Content = new StringContent(jsonPostString, Encoding.UTF8, "application/json"); var postResponse = await HttpClient.SendAsync(postRequest); if (!postResponse.IsSuccessStatusCode) { return(View("Whoops")); } if (submit.Equals("Submit")) { //create TSA var TSA = new TimeSheetApprovals { WeekStart = timeSheets.ElementAt(0).Date, WeekEnd = timeSheets.ElementAt(6).Date, Status = "0", TimeSubmitted = DateTime.Now }; decimal HoursWorked = 0; foreach (var item in timeSheets) { HoursWorked = HoursWorked + item.RegularHours; } TSA.WeekTotalRegular = HoursWorked; var PostTSAUri = "api/employee/" + username + "/timesheetapproval/"; var PostTSAJsonString = JsonConvert.SerializeObject(TSA); var postTSARequest = CreateRequestToService(HttpMethod.Post, PostTSAUri); postTSARequest.Content = new StringContent(PostTSAJsonString, Encoding.UTF8, "application/json"); var postTSAResponse = await HttpClient.SendAsync(postTSARequest); //add employee id on back end if (postTSAResponse.IsSuccessStatusCode.Equals("Conflict")) { return(View("TSAAlreadySubmitted")); } if (!postTSAResponse.IsSuccessStatusCode) { return(View("Whoops")); } return(View("TSASubmitted")); } else { return(View(timeSheets)); } } else { string jsonPutString = JsonConvert.SerializeObject(timeSheets); var PutUri = "api/employee/" + username + "/timesheet/" + timeSheets.ElementAt(0).Date.ToString("dd-MM-yyyy"); var putRequest = CreateRequestToService(HttpMethod.Put, PutUri); putRequest.Content = new StringContent(jsonPutString, Encoding.UTF8, "application/json"); var putResponse = await HttpClient.SendAsync(putRequest); if (!putResponse.IsSuccessStatusCode) { return(View("Whoops")); } if (submit.Equals("Submit")) { //return View("Forbidden"); //create TSA var TSA = new TimeSheetApprovals { WeekStart = timeSheets.ElementAt(0).Date, WeekEnd = timeSheets.ElementAt(6).Date, Status = "0", TimeSubmitted = DateTime.Now }; decimal HoursWorked = 0; foreach (var item in timeSheets) { HoursWorked = HoursWorked + item.RegularHours; } TSA.WeekTotalRegular = HoursWorked; var PostTSAUri = "api/employee/" + username + "/timesheetapproval/"; var PostTSAJsonString = JsonConvert.SerializeObject(TSA); var postTSARequest = CreateRequestToService(HttpMethod.Post, PostTSAUri); postTSARequest.Content = new StringContent(PostTSAJsonString, Encoding.UTF8, "application/json"); var postTSAResponse = await HttpClient.SendAsync(postTSARequest); //add employee id on back end if (postTSAResponse.IsSuccessStatusCode.Equals(409)) { return(View("TSAAlreadySubmitted")); } if (!postTSAResponse.IsSuccessStatusCode) { return(View("Whoops")); } return(View("TSASubmitted")); } else { return(View(timeSheets)); } } } catch { return(View("Whoops")); } }