public async Task <ActionResult> PostApplicant(
            [FromServices] DataContext context,
            [ModelBinder(BinderType = typeof(JsonWithFilesFormDataModelBinder))] AdoptionApplicant model,
            IFormFile fileObligationDocument)
        {
            if (ModelState.IsValid)
            {
                AdoptionProcess process = new AdoptionProcess();

                DateTime date = DateTime.Now;
                process.CreatedOn  = model.ModifiedOn;
                process.ModifiedOn = model.ModifiedOn;
                process.IsPendent  = true;
                process.Protocol   = String.Format("{0:yyyyMMddHHmmss}", date);
                process.AdoptionTechnicalAnalysis = new AdoptionTechnicalAnalysis();
                process.AdoptionAdequacy          = new AdoptionAdequacy();
                process.Task      = ProcessTasks.TechnicalAnalysis;
                process.Condition = ProcessConditions.Active;
                process.CreatedBy = model.ModifiedBy;

                model.AdoptionObligation.DocumentsAttachmentPath = await AddFileAttachment(fileObligationDocument, process.Protocol);

                process.AdoptionApplicant = model;

                context.AdoptionProcesses.Add(process);
                context.AdoptionApplicants.Add(model);
                await context.SaveChangesAsync();

                EmailSenderAdoption.SendEmail(model.AdoptionInterlocutor.Email, "*****@*****.**",
                                              $"Notificação do Banco de Áreas PCJ - Adoção (Processo {process.Protocol})", model.AdoptionInterlocutor.FullName, EmailTypes.Begin);

                return(Ok());
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
        public async Task <bool> UpdateApplicant(
            [FromServices] DataContext context,
            [ModelBinder(BinderType = typeof(JsonWithFilesFormDataModelBinder))] AdoptionApplicant model,
            IFormFile fileObligationDocument)
        {
            var applicant = await context.AdoptionApplicants
                            .AsNoTracking()
                            .FirstOrDefaultAsync(x => x.AdoptionApplicantId == model.AdoptionApplicantId);

            var process = await context.AdoptionProcesses
                          .AsNoTracking()
                          .FirstOrDefaultAsync(x => x.AdoptionApplicantId == model.AdoptionApplicantId);

            if (fileObligationDocument != null)
            {
                model.AdoptionObligation.DocumentsAttachmentPath = await AddFileAttachment(fileObligationDocument, process.Protocol);
            }

            applicant = model;
            context.Update(applicant);

            return((await context.SaveChangesAsync()) > 0);
        }