public async Task <IActionResult> PostPackageTracking([FromBody] PackageTracking packageTracking) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.PackageTracking.Add(packageTracking); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (PackageTrackingExists(packageTracking.Id)) { return(new StatusCodeResult(StatusCodes.Status409Conflict)); } else { throw; } } return(CreatedAtAction("GetPackageTracking", new { id = packageTracking.Id }, packageTracking)); }
public async Task <IActionResult> PutPackageTracking([FromRoute] int id, [FromBody] PackageTracking packageTracking) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != packageTracking.Id) { return(BadRequest()); } _context.Entry(packageTracking).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PackageTrackingExists(id)) { return(NotFound()); } else { throw; } } return(Ok(packageTracking)); }
private static IEnumerable <PackageTracking> ParsePackageTracking(IHtmlDocument document) { var tracking = new List <PackageTracking>(); PackageTracking status = null; var tableRows = document.QuerySelectorAll("table tr"); if (tableRows.Length == 0) { throw new ParseException(document.QuerySelector("p").Text().RemoveLineEndings()); } try { foreach (var columns in tableRows.Skip(1).Select(tableRow => tableRow.Children)) { if (columns.Count() == 3) { status = new PackageTracking(); if (columns[0].HasAttribute("rowspan")) { status.Date = DateTime.Parse(columns[0].Text().RemoveLineEndings()); } status.Location = columns[1].Text().RemoveLineEndings(); status.Status = columns[2].Text().RemoveLineEndings(); tracking.Add(status); } else { if (status != null) { status.Details = columns[0].Text().RemoveLineEndings(); } } } } catch (Exception ex) { throw new ParseException("Não foi possível converter o pacote/encomenda.", ex); } if (tracking.Count() == 0) { throw new ParseException("Rastreamento não encontrado."); } return(tracking); }