/// <summary> /// Retrieves the line item that /// </summary> /// <param name="lineId">id of line to return</param> /// <returns></returns> public ItemizedIncidentLine GetItemizedLineById(int lineId) { ItemizedIncidentLine line = null; const string sql = "SELECT * FROM incident_itemizated WHERE id = @line_id;"; using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@line_id", lineId); var reader = cmd.ExecuteReader(); while (reader.Read()) { line = GetItemizedIncidentLineFromReader(reader); } } if (line == null) { throw new Exception("Repair line does not exist."); } return(line); }
public IActionResult DeclineLineItem([FromBody] ApproveRepairViewModel model) { IActionResult result = Unauthorized(); try { ItemizedIncidentLine line = _db.GetItemizedLineById(model.LineId); if (!line.Approved) { _db.DeclineLineItem(model.LineId); result = Ok(); } else { result = BadRequest(new { Message = "Line approved already, can't decline now." }); } } catch { result = BadRequest(new { Message = "Declining repair line failed." }); } return(result); }
/// <summary> /// Saves reader data to an itemized incident line item. /// </summary> /// <param name="reader">Reader line with data</param> /// <returns>New ItemizedIncidentLine item</returns> private ItemizedIncidentLine GetItemizedIncidentLineFromReader(SqlDataReader reader) { ItemizedIncidentLine itemizedIncidentLine = new ItemizedIncidentLine(); itemizedIncidentLine.Id = Convert.ToInt32(reader["id"]); itemizedIncidentLine.IncidentId = Convert.ToInt32(reader["incident_id"]); itemizedIncidentLine.Description = Convert.ToString(reader["description"]); itemizedIncidentLine.Cost = Convert.ToDecimal(reader["cost"]); itemizedIncidentLine.TimeHours = Convert.ToInt32(reader["time_hours"]); itemizedIncidentLine.Approved = Convert.ToBoolean(reader["approved"]); itemizedIncidentLine.Declined = Convert.ToBoolean(reader["declined"]); return(itemizedIncidentLine); }
public IActionResult AddNewItemizedLine([FromBody] RepairLineViewModel model) { IActionResult result = Unauthorized(); try { if (ModelState.IsValid) { ItemizedIncidentLine itemizedIncidentLine = new ItemizedIncidentLine { Cost = model.Cost, Description = model.Description, TimeHours = model.TimeHours, IncidentId = model.IncidentId, Approved = false, Declined = false }; //Check if incidents exists Incident existingIncident = _db.GetIncidentById(model.IncidentId); //if vehicle does exist, add incident to vehicle if (existingIncident != null) { itemizedIncidentLine.IncidentId = existingIncident.Id; itemizedIncidentLine.Id = _db.AddItemizedLine(itemizedIncidentLine); result = Ok(itemizedIncidentLine); } } else { result = BadRequest(new { Message = "Incident does not Exist." }); } } catch { result = BadRequest(new { Message = "Adding new repair line failed." }); } return(result); }
/// <summary> /// Adds an incident by line item to the database. /// </summary> /// <param name="model">New itemized line to add</param> /// <returns>Id of the newly generated incident by line item</returns> public int AddItemizedLine(ItemizedIncidentLine model) { using (SqlConnection conn = new SqlConnection(_connectionString)) { const string sql = "INSERT [incident_itemizated] (incident_id, description, cost, time_hours, approved, declined) " + "VALUES(@incident_id, @description, @cost, @time_hours, @approved, @declined)"; conn.Open(); SqlCommand cmd = new SqlCommand(sql + _getLastIdSQL, conn); cmd.Parameters.AddWithValue("@incident_id", model.IncidentId); cmd.Parameters.AddWithValue("@description", model.Description); cmd.Parameters.AddWithValue("@cost", model.Cost); cmd.Parameters.AddWithValue("@time_hours", model.TimeHours); cmd.Parameters.AddWithValue("@approved", model.Approved); cmd.Parameters.AddWithValue("@declined", model.Declined); model.Id = (int)cmd.ExecuteScalar(); } return(model.Id); }
/// <summary> /// Edits fields in the line item then sets line item to unapproved. /// </summary> /// <param name="itemLineId"></param> /// <returns>Whether it succeded or not</returns> public int EditLineItem(ItemizedIncidentLine model) { //pass in new view model and keep the same line id const string sql = "UPDATE incident_itemizated " + "SET description = @description, cost = @cost, time_hours = @time_hours, approved = null, declined = null" + "WHERE incident_id = model.IncidentId "; using (SqlConnection conn = new SqlConnection(_connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(sql + _getLastIdSQL, conn); cmd.Parameters.AddWithValue("@incident_id", model.IncidentId); cmd.Parameters.AddWithValue("@description", model.Description); cmd.Parameters.AddWithValue("@cost", model.Cost); cmd.Parameters.AddWithValue("@time_hours", model.TimeHours); model.Id = (int)cmd.ExecuteScalar(); return(model.Id); } }
public IActionResult EditLineItem(UpdateRepairItemViewModel model) { IActionResult result = Unauthorized(); try { ItemizedIncidentLine line = _db.GetItemizedLineById(model.LineId); line.Description = model.Description; line.Cost = model.Cost; line.TimeHours = model.TimeHours; _db.EditLineItem(line); } catch { result = BadRequest(new { Message = "Unable to update Incident Line." }); } return(result); }