private static Application GenerateDeadlineApplication(FormCollection collection) { DeadlineApplication toReturn = new DeadlineApplication(); if (collection["deadline_type"] == "by_last_date") { toReturn.HasLastDate = true; toReturn.EndTime = Convert.ToDateTime(collection["deadline_last_date"]); toReturn.EndTime = toReturn.EndTime.AddHours( Convert.ToInt32(collection["deadline_last_time"].Split(':')[0]) ); toReturn.EndTime = toReturn.EndTime.AddMinutes( Convert.ToInt32(collection["deadline_last_time"].Split(':')[1]) ); } else if (collection["deadline_type"] == "from_some_date") { toReturn.StartTime = Convert.ToDateTime(collection["deadline_start_date"]); toReturn.StartTime = toReturn.StartTime.AddHours( Convert.ToInt32(collection["deadline_start_time"].Split(':')[0]) ); toReturn.StartTime = toReturn.StartTime.AddMinutes( Convert.ToInt32(collection["deadline_start_time"].Split(':')[1]) ); switch (collection["deadline_duration_measure"]) { case "minutes": toReturn.Duration = new TimeSpan(0, 0, Convert.ToInt32(collection["deadline_duration"]), 0); break; case "hours": toReturn.Duration = new TimeSpan(0, Convert.ToInt32(collection["deadline_duration"]), 0, 0); break; case "days": toReturn.Duration = new TimeSpan(Convert.ToInt32(collection["deadline_duration"]), 0, 0, 0); break; case "weeks": toReturn.Duration = new TimeSpan(7 * Convert.ToInt32(collection["deadline_duration"]), 0, 0, 0); break; case "months": toReturn.Duration = new TimeSpan(30 * Convert.ToInt32(collection["deadline_duration"]), 0, 0, 0); break; } } return(toReturn); }
public HttpResponseMessage Post([FromBody] Application application) { DeadlineApplication deadlineApp = application as DeadlineApplication; SessionApplication sessionApp = application as SessionApplication; using (SqlConnection connection = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DBCS"].ConnectionString)) { string cmdString = "INSERT INTO Applications VALUES(@ServiceId, @ServiceType, @Description, @Username, @DetailsId, @Status, GETDATE(), NULL, NULL);"; Dictionary <string, object> parameters = new Dictionary <string, object>(); parameters.Add("@ServiceId", application.ServiceId); parameters.Add("@ServiceType", application.ServiceType); parameters.Add("@Description", application.Description); parameters.Add("@Username", User.Identity.Name); parameters.Add("@Status", "NO_BILL"); if (deadlineApp != null) { if (deadlineApp.StartTime.Year < 1753) { deadlineApp.StartTime = new DateTime(1900, 1, 1); } if (deadlineApp.EndTime.Year < 1753) { deadlineApp.EndTime = new DateTime(1900, 1, 1); } cmdString = cmdString.Replace("@DetailsId", "IDENT_CURRENT('Deadline_Application_Details') + 1"); cmdString += "INSERT INTO Deadline_Application_Details VALUES(@HasLastDate, @StartTime, @EndTime, @Duration);"; parameters.Add("@HasLastDate", deadlineApp.HasLastDate); parameters.Add("@StartTime", deadlineApp.StartTime); parameters.Add("@EndTime", deadlineApp.EndTime); parameters.Add("@Duration", JsonConvert.SerializeObject(deadlineApp.Duration)); } else if (sessionApp != null) { cmdString = cmdString.Replace("@DetailsId", "IDENT_CURRENT('Session_Application_Details') + 1"); cmdString += "INSERT INTO Session_Application_Details VALUES (@SessionStart);"; parameters.Add("@SessionStart", sessionApp.SessionStartTime); } else { cmdString = cmdString.Replace("@DetailsId", "0"); } SqlCommand cmd = new SqlCommand(cmdString, connection); foreach (var parameter in parameters) { cmd.Parameters.AddWithValue(parameter.Key, parameter.Value); } connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); cmd.Transaction = transaction; try { cmd.ExecuteNonQuery(); transaction.Commit(); return(Request.CreateResponse(HttpStatusCode.OK, "Application successfully added")); } catch (Exception ex) { transaction.Rollback(); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)); } } }