public async Task <IActionResult> OnPostAsync()
        {
            Debug.AutoFlush = true;
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            Guid     formacaoId   = Guid.Parse(Request.Form["FormacaoColaborador.FormacaoId"]);
            int      colId        = int.Parse(Request.Form["Colaborador.ColaboradorID"]);
            DateTime formacaoData = DateTime.Parse(Request.Form["FormacaoColaborador.FormacaoData"]);
            int      validade     = Validade(formacaoId);
            DateTime caducidade   = formacaoData.AddYears(validade);

            DateTime now  = DateTime.UtcNow;
            string   user = User.Identity.Name;

            FormacaoColaborador novaFormacao = new FormacaoColaborador
            {
                FormacaoId         = formacaoId,
                ColaboradorId      = colId,
                FormacaoData       = formacaoData,
                FormacaoCaducidade = caducidade,
                CreatedAt          = now,
                CreatedBy          = user
            };

            db.FormacoesColaboradores.Add(novaFormacao);
            await db.SaveChangesAsync();

            return(RedirectToPage("ColaboradorFormacao", new { id = colId }).WithSuccess("Well done!", "Formação adicionada com sucesso!"));
        }
        public async Task <IActionResult> OnGetReativarAsync(Guid?id)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            HistoricoFormacaoColaborador hfc = await db.HistoricoFormacoesColaboradores.FindAsync(id);

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

            int colId = hfc.ColaboradorId;

            FormacaoColaborador copyFc = new FormacaoColaborador
            {
                FormacaoColaboradorId = hfc.HistoricoFormacaoColaboradorId,
                FormacaoId            = hfc.FormacaoId,
                Formacao           = hfc.Formacao,
                ColaboradorId      = hfc.ColaboradorId,
                FormacaoData       = hfc.FormacaoData,
                FormacaoCaducidade = hfc.FormacaoCaducidade
            };

            db.FormacoesColaboradores.Add(copyFc);
            db.HistoricoFormacoesColaboradores.RemoveRange(db.HistoricoFormacoesColaboradores.Where(d => d.HistoricoFormacaoColaboradorId == id));

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!HistoricoFormacaoColaboradorExists(hfc.HistoricoFormacaoColaboradorId))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("ColaboradorFormacao", new { id = colId }).WithSuccess("Ok.", "Formação reativada com sucesso!"));
        }
        public async Task <IActionResult> OnGetApagarFormacaoAsync(Guid?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            FormacaoColaborador fc = await db.FormacoesColaboradores.FindAsync(id);

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

            int colId = fc.ColaboradorId;

            if (fc != null)
            {
                db.FormacoesColaboradores.Remove(fc);
                await db.SaveChangesAsync();
            }

            return(RedirectToPage("ColaboradorFormacao", new { id = colId }).WithSuccess("Ok.", "Formação apagada com sucesso!"));
        }