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));
        }
Example #3
0
        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);
        }