Beispiel #1
0
        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);
        }
Beispiel #2
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);
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
        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));
            }
        }
Beispiel #5
0
        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));
            }
        }
Beispiel #6
0
        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);
        }
Beispiel #7
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);
        }
Beispiel #8
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);
        }