public async Task <bool> UpdateGeometry( [FromServices] DataContext context, [ModelBinder(BinderType = typeof(JsonWithFilesFormDataModelBinder))] DisponibilizationGeometry model, IFormFile fileGeometry) { var process = await context.DisponibilizationProcesses .AsNoTracking() .FirstOrDefaultAsync(x => x.DisponibilizationProcessId == model.DisponibilizationProcessId); var geometry = await context.DisponibilizationGeometries .AsNoTracking() .FirstOrDefaultAsync(x => x.GeometryId == model.GeometryId); if (model.Type == "Preparação" && process.Task == ProcessTasks.GeometryPreparation) { process.Task = ProcessTasks.TechnicalAnalysis; process.IsPendent = true; EmailSenderDisponibilization.SendEmail("*****@*****.**", "", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", "", EmailTypes.Geometry); } if (model.Type == "Publicação" && process.Task == ProcessTasks.GeometryPublishing) { process.Task = ProcessTasks.Completion; process.IsPendent = true; EmailSenderDisponibilization.SendEmail("*****@*****.**", "", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", "", EmailTypes.GeometryPublication); } if (fileGeometry != null) { model.AttachmentPath = await AddFileAttachment(fileGeometry, process.Protocol); } geometry = model; context.Update(geometry); context.Update(process); return((await context.SaveChangesAsync()) > 0); }
//Verifica quais processos ja estão com prazo de adequação expirado. private List <DisponibilizationProcess> FilterExpiredProcesses(List <DisponibilizationProcess> processes) { for (int i = processes.Count - 1; i > -1; i--) { if (processes[i].Task == ProcessTasks.Adequacy) { var days = (DateTime.Now - processes[i].ModifiedOn).TotalDays; if (days > 10) { EmailSenderDisponibilization.SendEmail("*****@*****.**", "", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {processes[i].Protocol})", "", EmailTypes.AdequacyExpired); processes[i].Task = ProcessTasks.Completion; processes[i].Task = ProcessConditions.Canceled; } } } return(processes); }
public async Task <ActionResult <DisponibilizationGeometry> > PostGeometry( [FromServices] DataContext context, [ModelBinder(BinderType = typeof(JsonWithFilesFormDataModelBinder))] DisponibilizationGeometry model, IFormFile fileGeometry) { if (ModelState.IsValid) { var process = await context.DisponibilizationProcesses .AsNoTracking() .FirstOrDefaultAsync(x => x.DisponibilizationProcessId == model.DisponibilizationProcessId); process.IsPendent = true; if (model.Type == "Preparação") { process.Task = ProcessTasks.TechnicalAnalysis; EmailSenderDisponibilization.SendEmail("*****@*****.**", "", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", "", EmailTypes.Geometry); } if (model.Type == "Publicação") { process.Task = ProcessTasks.Completion; EmailSenderDisponibilization.SendEmail("*****@*****.**", "", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", "", EmailTypes.GeometryPublication); } model.AttachmentPath = await AddFileAttachment(fileGeometry, process.Protocol); context.DisponibilizationGeometries.Add(model); context.Update(process); await context.SaveChangesAsync(); return(model); } else { return(BadRequest(ModelState)); } }
public async Task <ActionResult <DisponibilizationAnalysis> > PostAnalysis( [FromServices] DataContext context, [FromBody] DisponibilizationAnalysis model, int id) { if (ModelState.IsValid) { var process = await context.DisponibilizationProcesses .AsNoTracking() .FirstOrDefaultAsync(x => x.TechnicalAnalysisId == id); var applicant = await context.DisponibilizationApplicants .AsNoTracking() .FirstOrDefaultAsync(x => x.ApplicantId == process.ApplicantId); var technicalAnalysis = await context.DisponibilizationTechnicalAnalyses .AsNoTracking() .FirstOrDefaultAsync(x => x.TechnicalAnalysisId == id); model.TechnicalAnalysisId = id; context.Add(model); await context.SaveChangesAsync(); EmailSenderDisponibilization.SendEmail( applicant.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", applicant.FullName, EmailTypes.Analysis, model.Note ); return(model); } else { return(BadRequest(ModelState)); } }
public async Task <ActionResult> PostApplicant( [FromServices] DataContext context, [ModelBinder(BinderType = typeof(JsonWithFilesFormDataModelBinder))] DisponibilizationApplicant model, IFormFile fileGeometry, IFormFile fileImage) { if (ModelState.IsValid) { DisponibilizationProcess process = new DisponibilizationProcess(); DateTime date = DateTime.Now; process.CreatedOn = model.ModifiedOn; process.ModifiedOn = model.ModifiedOn; process.IsPendent = true; process.Protocol = String.Format("{0:yyyyMMddHHmmss}", date); process.TechnicalAnalysis = new DisponibilizationTechnicalAnalysis(); process.Task = ProcessTasks.GeometryPreparation; process.Condition = ProcessConditions.Active; process.CreatedBy = model.ModifiedBy; model.GeometryAttachmentPath = await AddFileAttachment(fileGeometry, process.Protocol); model.ImageAttachmentPath = await AddFileAttachment(fileImage, process.Protocol); process.Applicant = model; context.DisponibilizationProcesses.Add(process); context.DisponibilizationApplicants.Add(model); await context.SaveChangesAsync(); EmailSenderDisponibilization.SendEmail(model.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", model.FullName, EmailTypes.Begin); return(Ok()); } else { return(BadRequest(ModelState)); } }
public async Task <bool> UpdateApplicant( [FromServices] DataContext context, [ModelBinder(BinderType = typeof(JsonWithFilesFormDataModelBinder))] DisponibilizationApplicant model, IFormFile fileGeometry, IFormFile fileImage) { var applicant = await context.DisponibilizationApplicants .AsNoTracking() .FirstOrDefaultAsync(x => x.ApplicantId == model.ApplicantId); var process = await context.DisponibilizationProcesses .AsNoTracking() .FirstOrDefaultAsync(x => x.ApplicantId == model.ApplicantId); if (fileGeometry != null) { model.GeometryAttachmentPath = await AddFileAttachment(fileGeometry, process.Protocol); } if (fileImage != null) { model.ImageAttachmentPath = await AddFileAttachment(fileImage, process.Protocol); } if (process.Task == ProcessTasks.Adequacy) { process.Task = ProcessTasks.GeometryPreparation; process.IsPendent = true; context.Update(process); EmailSenderDisponibilization.SendEmail(applicant.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", applicant.FullName, EmailTypes.AdequacyConcluded); } applicant = model; context.Update(applicant); return((await context.SaveChangesAsync()) > 0); }
public async Task <bool> UpdateTechnicalAnalysis([FromServices] DataContext context, [FromBody] DisponibilizationTechnicalAnalysis model) { var process = await context.DisponibilizationProcesses .AsNoTracking() .FirstOrDefaultAsync(x => x.DisponibilizationProcessId == model.ProcessId); process.IsPendent = true; var applicant = await context.DisponibilizationApplicants .AsNoTracking() .FirstOrDefaultAsync(x => x.ApplicantId == process.ApplicantId); //DateTime date = DateTime.Now; if (model.Status == "Adequar") { process.Task = ProcessTasks.Adequacy; EmailSenderDisponibilization.SendEmail(applicant.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", applicant.FullName, EmailTypes.TechnicalAnalysisAdquacy); process.ModifiedOn = model.ModifiedOn; } if (model.Status == "Aceitar") { process.Task = ProcessTasks.GeometryPublishing; EmailSenderDisponibilization.SendEmail( "*****@*****.**", "", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", "", EmailTypes.TechnicalAnalysisAccept ); EmailSenderDisponibilization.SendEmail( applicant.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", applicant.FullName, EmailTypes.TechnicalAnalysisAcceptApplicant ); } if (model.Status == "Arquivar") { process.Task = ProcessTasks.Completion; EmailSenderDisponibilization.SendEmail("*****@*****.**", "", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", "", EmailTypes.TechnicalAnalysisArquive); } var technicalAnalysis = await context.DisponibilizationTechnicalAnalyses .AsNoTracking() .FirstOrDefaultAsync(x => x.TechnicalAnalysisId == model.TechnicalAnalysisId); model.ModifiedOn = model.ModifiedOn; technicalAnalysis = model; context.Update(technicalAnalysis); context.Update(process); return((await context.SaveChangesAsync()) > 0); }
public async Task <bool> UpdateProcess([FromServices] DataContext context, [FromBody] DisponibilizationProcess model) { var process = await context.DisponibilizationProcesses .AsNoTracking() .FirstOrDefaultAsync(x => x.DisponibilizationProcessId == model.DisponibilizationProcessId); var applicant = await context.DisponibilizationApplicants .AsNoTracking() .FirstOrDefaultAsync(x => x.ApplicantId == process.ApplicantId); process = model; if (process.Status == "Encerrar") { process.Task = ProcessTasks.Completed; if (process.TechnicalAnalysis.Status == "Aceitar") { EmailSenderDisponibilization.SendEmail(applicant.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", applicant.FullName, EmailTypes.Completion); } if (process.TechnicalAnalysis.Status == "Arquivar") { EmailSenderDisponibilization.SendEmail(applicant.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", applicant.FullName, EmailTypes.TechnicalAnalysisArquiveConcluded); } if (process.TechnicalAnalysis.Status == "Adequar") { EmailSenderDisponibilization.SendEmail(applicant.Email, "*****@*****.**", $"Notificação do Banco de Áreas PCJ - Disponibilização (Processo {process.Protocol})", applicant.FullName, EmailTypes.AdequacyExpiredConcluded); } process.Condition = ProcessConditions.Concluded; process.ModifiedOn = model.ModifiedOn; process.Geometries = null; process.Adequacies = null; process.TechnicalAnalysis = null; process.Applicant = null; context.Update(process); return((await context.SaveChangesAsync()) > 0); } if (process.Status == "Reanalisar" && process.Task == ProcessTasks.Completion) { process.Status = ""; process.Task = ProcessTasks.GeometryPreparation; process.Condition = ProcessConditions.Active; process.IsPendent = model.IsPendent; } process.ModifiedOn = model.ModifiedOn; process.Geometries = null; process.Adequacies = null; process.TechnicalAnalysis = null; process.Applicant = null; context.Update(process); return((await context.SaveChangesAsync()) > 0); }