Обновление HTTP POST с другой информацией и требованиями из тестовых данных - PullRequest
0 голосов
/ 11 февраля 2019

Я создаю веб-API.Где работники относятся к работе.Данные находятся в файле Excel, где они имеют тип сотрудника, тип сертификата и т. Д.

Рабочий контроллер должен выполнить HTTP Update Post.

Где он проверяет:

Если персональный идентификатор и идентификатор задания соответствуют типу сотрудника P и типу задания.

ЕСЛИ он это делает, то он должен проверить сертификаты, есть ли у них требуемые и действительны ли они.На дату работы.

Если нет, следует отправить строку с ошибкой.

Каков наилучший подход для этого?

У меня есть все модели и все контроллеры.Это относится к контроллеру работников, и если РАБОТНИК имеет правильный тип работника и правильные сертификаты, он может быть добавлен в СПИСОК РАБОТ.И вставьте upp в конец сети.

Пожалуйста, помогите мне, если это возможно.

Первый блок кода - это добавление заданий.Другие - это то, что я пытаюсь и не работает.

Asp.Net Core SQL

{
    [Route("api/[controller]")]
    public class WorkController : Controller
    {
        private readonly PodiumContext _context;
        private object listBox_Certificate;

        public object Message { get; private set; }

        public WorkController(PodiumContext context)
        {
            this._context = context;
        }

        [HttpGet]
        public async Task<ActionResult<IEnumerable<Work>>> Get()
        {
            return await _context.Work.ToListAsync();
        }

        [HttpPost]
        public async Task<ActionResult<IEnumerable<Work>>> Post([FromBody]Operator obj) {
            return await _context.Work
                .Where(work => work.Jobs.Any(job => job.Operator.ID == obj.ID))
                .Include(w => w.Jobs)
                    .ThenInclude(j => j.Certificates)
                        .ThenInclude(c => c.CertificateType)
                .Include(w => w.Jobs)
                    .ThenInclude(j => j.EmployeeType)
                .Include(w => w.Jobs)
                    .ThenInclude(j => j.Personal)
                        .ThenInclude(jp => jp.Personal)
                            .ThenInclude(p => p.Certificates)
                .Include(w => w.Jobs)
                    .ThenInclude(j => j.Personal)
                        .ThenInclude(jp => jp.Personal)
                            .ThenInclude(p => p.Type)
                .ToListAsync<Work>();

        }

        public void readCertificate(string sida)
        {
            var Certificate = new WebClient();
            Certificate.Encoding = Encoding.UTF8;
            byte[] res = Certificate.DownloadData(sida);
            WebHeaderCollection allaHeaders = Certificate.ResponseHeaders;
            //MessageBox.Show("Antal certificates = "{0}", allaCertificates.Count);
            listBox_Certificate.Items();
            for (int i = 0; i < allaHeaders.Count; i++)
            {
                listBox_Certificate.Items.Add("" + allaHeaders.GetKey(i) + "\t" + allaCertificates.Get(i));

                if (allaHeaders.GetKey(i) == "Content-Type") // && allaHeaders.Get(i) == "text/plain")
                {
                    getContentType(allaHeaders.Get(i));

                    if (checkbox_autoFormat.Checked)
                    {
                        if (allaHeaders.Get(i).Contains("json")) ;
                    }
                    //m

                }


            }



        }

        private void getContentType(string v)
        {
            throw new NotImplementedException();
        }

        public void post(string url, string key1, string value1, string key2, string value2, string key3,
            string value3, string key4, string value4, string key5, string value5, string key6, string value6, string key7, string value7, string key8, string value8)
        {

            //MessageBox.Show("key1: " + key1 + " : value1: " + Value1: " + Value1 + "\nkey2: " + key2 + " : value2: " + value2, "POST");
            /*         
             */

            NameValueCollection values = new NameValueCollection();
            values.Add(key1, value1);
            values.Add(key2, value2);
            values.Add(key3, value3);
            values.Add(key4, value4);
            values.Add(key5, value5);
            values.Add(key6, value6);
            values.Add(key7, value7);
            values.Add(key8, value8);
            //string Url = urlvalue.ToLower();
            string Url = url;

            using (WebClient post = new WebClient())
            {
                post.Headers.Add("Content-Type","Certificates");
                byte[] result = post.UploadValues(Url,"Post", values);
                string ResultAuthTicket = Encoding.UTF8.GetString(result);
            }

            Message.Box("Sucess", "Post");
            return;

        }


        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)

            {
                return NotFound();
            }

            var personal = await _context.Personal
                .Include(s => s.Certificates)
                .ThenInclude(e => e.CertificateTypeID)
                .AsNoTracking()
                .SingleOrDefaultAsync(m => m.ID == id);

            if (student == null)
            {
                return NotFound();
            }

            return View(Personal);

        }

        [HttpPost, ActionName("Edit")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> EditPost(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var PersonalToUpdate = await _context.Personal.SingleOrDefaultAsync(s => s.ID ==
            if (await TryUpdateModelAsync<Work>(
                PersonalToUpdate,
                "",
                s => s.FirstMidName, s => s.LastName, s => s.EnrollmentDate))
            {
                try
                {
                    await _context.SaveChangesAsync();
                    return RedirectToAction(nameof(Index));
                }

                catch (DbUpdateException)
                {
                    ModelState.AddModelError("", "Unable To Update work. "
                    + "Try Agan, and if the problem persist, " +
                    "see your system administrator.");
                }

            }

            return View(studentToUpdate);

        } 




    }
}

Каков синтаксис / инструменты для обновления, где я могу добавлять работников с помощьюправильные сертификаты на правильную дату работы?

...