public async Task<IHttpActionResult> Post(ProposalEditModel data) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var id = Guid.NewGuid(); await _db.Insert(id, data); return CreatedAtRoute("Proposal", new { id = id }, await _db.GetById(id)); }
public async Task Insert(Guid id, ProposalEditModel item) { using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString)) { connection.Open(); using (var transaction = connection.BeginTransaction()) { var proposal = connection.ExecuteAsync("insert into Proposals(Id, Status, CreatedBy, CreatedOn, UpdatedOn) values(@id, 0, @createdBy, @now, @now);", new { id = id, createdBy = "user", now = DateTime.UtcNow }, transaction); var students = connection.ExecuteAsync("insert into Proposals_2_Students(ProposalId, StudentId) values(@proposalId, @studentId);", item.Students.Select(s => new { proposalId = id, studentId = s }), transaction); var actions = connection.ExecuteAsync("insert into Proposals_2_Actions(ProposalId, ActionId, [Values]) values(@proposalId, @actionId, @values);", item.Actions.Select(a => new { proposalId = id, actionId = a.Id, values = FieldsXmlHelpers.ValuesToXml(a.FieldValues) }), transaction); var reasons = connection.ExecuteAsync("insert into Proposals_2_Reasons(ProposalId, ReasonId, [Values]) values(@proposalId, @reasonId, @values);", item.Reasons.Select(r => new { proposalId = id, reasonId = r.Id, values = FieldsXmlHelpers.ValuesToXml(r.FieldValues) }), transaction); await Task.WhenAll(proposal, students, actions, reasons); transaction.Commit(); } } }
public async Task<IHttpActionResult> Put(Guid id, ProposalEditModel data) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var recordsUpdated = await _db.Update(id, data); if (recordsUpdated == 0) { await _db.Insert(id, data); return CreatedAtRoute("Proposal", new { id = id }, await _db.GetById(id)); } return StatusCode(HttpStatusCode.NoContent); }
public async Task<int> Update(Guid id, ProposalEditModel item) { using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString)) { connection.Open(); using (var transaction = connection.BeginTransaction()) { var result = await connection.ExecuteAsync(@"update Proposals set Status=@status, UpdatedOn=@now where Id=@id delete from Proposals_2_Students where ProposalId = @id delete from Proposals_2_Actions where ProposalId = @id delete from Proposals_2_Reasons where ProposalId = @id;", new { id = id, status = 0, now = DateTime.UtcNow }, transaction); var students = connection.ExecuteAsync("insert into Proposals_2_Students(ProposalId, StudentId) values(@proposalId, @studentId);", item.Students.Select(s => new { proposalId = id, studentId = s }), transaction); var actions = connection.ExecuteAsync("insert into Proposals_2_Actions(ProposalId, ActionId, [Values]) values(@proposalId, @actionId, @values);", item.Actions.Select(a => new { proposalId = id, actionId = a.Id, values = FieldsXmlHelpers.ValuesToXml(a.FieldValues) }), transaction); var reasons = connection.ExecuteAsync("insert into Proposals_2_Reasons(ProposalId, ReasonId, [Values]) values(@proposalId, @reasonId, @values);", item.Reasons.Select(r => new { proposalId = id, reasonId = r.Id, values = FieldsXmlHelpers.ValuesToXml(r.FieldValues) }), transaction); await Task.WhenAll(students, actions, reasons); transaction.Commit(); return result; } } }