public async Task UpdateAsync(Guid?processId, ProcessRequestTO processRequestTO)
        {
            var processEntity = await _processRepository.GetByIdWithIncludesAsync(processId.Value);

            processEntity.UnifiedProcessNumber = processRequestTO.UnifiedProcessNumber;
            processEntity.ClientPhysicalFolder = processRequestTO.ClientPhysicalFolder;
            processEntity.DistributionDate     = processRequestTO.DistributionDate;
            processEntity.LinkedProcessId      = processRequestTO.LinkedProcessId;
            processEntity.JusticeSecret        = processRequestTO.JusticeSecret;
            processEntity.Description          = processRequestTO.Description;

            processEntity.SituationId = processRequestTO.SituationId;

            processEntity.ProcessResponsible = new List <ProcessResponsibleEntity>();
            foreach (var responsibleId in processRequestTO.Responsibles)
            {
                processEntity.ProcessResponsible.Add(new ProcessResponsibleEntity
                {
                    ResponsibleId = responsibleId
                });
            }

            processEntity.UpdateUserName = processRequestTO.UpdateUserName;
            processEntity.Version        = processEntity.Version + 1;
            processEntity.UpdateDate     = DateTime.Now;

            await _processRepository.UpdateAsync(processEntity);
        }
        private async Task <List <ErrorsTO> > ValidateSituationId(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            var situationEntity = await _situationRepository.GetByIdAsync(processRequestTO.SituationId.Value);

            if (situationEntity == null)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "SituationId",
                    Validation = Messaging.InvalidSituationId
                });
            }
            else if (situationEntity.Finished != null && situationEntity.Finished.Value)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "SituationId",
                    Validation = Messaging.RegistrationCannotBeEdited
                });
            }

            return(errors);
        }
        private async Task <List <ErrorsTO> > ValidateLinkedProcessId(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            var processSpecification = new BaseSpecification <ProcessEntity>();

            processSpecification.AddCriteria(process => process.Id == processRequestTO.LinkedProcessId);
            var processFather = (await _processRepository.ListAsync(processSpecification)).FirstOrDefault();

            var cont = 0;

            while (processFather != null && processFather.LinkedProcessId != null)
            {
                cont++;
                processSpecification = new BaseSpecification <ProcessEntity>();
                processSpecification.AddCriteria(process => process.Id == processRequestTO.LinkedProcessId);
                processFather = (await _processRepository.ListAsync(processSpecification)).FirstOrDefault();
            }

            if (cont > 4)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "LinkedProcessId",
                    Validation = Messaging.ExceededLimitOfHierarchyLinkedProcessId
                });
            }

            return(errors);
        }
        public async Task <ProcessResponseTO> AddAsync(ProcessRequestTO processRequestTO)
        {
            var processEntity = processRequestTO.ToProcessEntity();

            processEntity.Version    = 1;
            processEntity.UpdateDate = DateTime.Now;

            processEntity = await _processRepository.AddAsync(processEntity);

            return(processEntity.ToProcessResponseTO());
        }
        public async Task ValidateUpdateAsync(Guid?processId, ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            errors.AddRange(await RequiredProcessId(processId));

            if (errors.Count == 0)
            {
                errors.AddRange(RequiredFields(processRequestTO));
            }

            if (errors.Count == 0)
            {
                errors.AddRange(FixedSizeFields(processRequestTO));
            }

            if (errors.Count == 0)
            {
                errors.AddRange(MaximumSizeFields(processRequestTO));
            }

            if (errors.Count == 0)
            {
                errors.AddRange(await ValidateDoubleUnifiedProcessNumber(processId, processRequestTO));
            }

            if (errors.Count == 0)
            {
                errors.AddRange(ValidateDistributionDate(processRequestTO));
            }

            if (errors.Count == 0)
            {
                errors.AddRange(await ValidateResponsibles(processRequestTO));
            }

            if (errors.Count == 0)
            {
                errors.AddRange(await ValidateSituationId(processRequestTO));
            }

            if (errors.Count == 0)
            {
                errors.AddRange(await ValidateLinkedProcessId(processRequestTO));
            }

            if (errors.Count > 0)
            {
                throw new ErrorsException(errors);
            }
        }
        private List <ErrorsTO> FixedSizeFields(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            if (processRequestTO.UnifiedProcessNumber.Replace("-", string.Empty).Replace(".", string.Empty).Trim().Length != 20)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "UnifiedProcessNumber",
                    Validation = Messaging.FixedSizeUnifiedProcessNumber
                });
            }

            return(errors);
        }
        private List <ErrorsTO> ValidateDistributionDate(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            if (processRequestTO.DistributionDate != null && processRequestTO.DistributionDate.Value.Date > DateTime.Now.Date)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "DistributionDate",
                    Validation = Messaging.DistributionDateGreaterThanTheCurrentDate
                });
            }

            return(errors);
        }
        private async Task <List <ErrorsTO> > ExistsSituationId(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            var situationEntity = await _situationRepository.GetByIdAsync(processRequestTO.SituationId.Value);

            if (situationEntity == null)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "SituationId",
                    Validation = Messaging.InvalidSituationId
                });
            }

            return(errors);
        }
        private async Task <ProcessRequestTO> CreateProcess()
        {
            Guid?situationId = null;

            if (!string.IsNullOrEmpty(Variable.SituationId))
            {
                var situationRepository = Repository.CatalogContext.Set <SituationEntity>();
                situationId = ((await situationRepository.ToListAsync()).First(situation => situation.Name.Trim().ToUpper() == Variable.SituationId.Trim().ToUpper())).Id;
            }

            var responsibleRepository           = Repository.CatalogContext.Set <ResponsibleEntity>();
            ResponsibleEntity responsibleEntity = null;

            if (!string.IsNullOrEmpty(Variable.ResponsiblesCpf) && !string.IsNullOrEmpty(Variable.ResponsiblesName) && !string.IsNullOrEmpty(Variable.ResponsiblesEMail) && !string.IsNullOrEmpty(Variable.Image))
            {
                responsibleEntity = (await responsibleRepository.AddAsync(new ResponsibleEntity
                {
                    Cpf = Convert.ToInt64(Variable.ResponsiblesCpf.Replace(".", "").Replace("-", "")),
                    Name = Variable.ResponsiblesName,
                    Mail = Variable.ResponsiblesEMail,
                    Photograph = Variable.Image,
                })).Entity;
            }

            var processRequestTO = new ProcessRequestTO
            {
                Description          = Variable.Description,
                UpdateUserName       = "******",
                DistributionDate     = !string.IsNullOrEmpty(Variable.DistributionDate) ? (DateTime?)DateTime.ParseExact(Variable.DistributionDate, "yyyy-MM-dd", CultureInfo.CreateSpecificCulture("pt-BR")) : null,
                JusticeSecret        = !string.IsNullOrEmpty(Variable.JusticeSecret) ? (bool?)(Variable.JusticeSecret == "S" ? true : false) : null,
                SituationId          = situationId,
                UnifiedProcessNumber = Variable.UnifiedProcessNumber,
                ClientPhysicalFolder = Variable.ClientPhysicalFolder,
                Responsibles         = responsibleEntity != null ? new List <Guid?>
                {
                    responsibleEntity.Id
                } : null
            };

            await Repository.CatalogContext.SaveChangesAsync();

            return(processRequestTO);
        }
        private List <ErrorsTO> RequiredFields(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            if (string.IsNullOrEmpty(processRequestTO.UnifiedProcessNumber))
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "UnifiedProcessNumber",
                    Validation = Messaging.RequiredUnifiedProcessNumber
                });
            }

            if (processRequestTO.JusticeSecret == null)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "JusticeSecret",
                    Validation = Messaging.RequiredJusticeSecret
                });
            }

            if (processRequestTO.SituationId == null)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "SituationId",
                    Validation = Messaging.RequiredSituationId
                });
            }

            if (processRequestTO.Responsibles == null || !processRequestTO.Responsibles.Any())
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "Responsibles",
                    Validation = Messaging.RequiredResponsibles
                });
            }

            return(errors);
        }
Esempio n. 11
0
        public static ProcessEntity ToProcessEntity(this ProcessRequestTO processRequestTO)
        {
            if (processRequestTO == null)
            {
                return(null);
            }

            return(new ProcessEntity()
            {
                Description = processRequestTO.Description,
                SituationId = processRequestTO.SituationId,
                JusticeSecret = processRequestTO.JusticeSecret,
                UpdateUserName = processRequestTO.UpdateUserName,
                LinkedProcessId = processRequestTO.LinkedProcessId,
                DistributionDate = processRequestTO.DistributionDate,
                ClientPhysicalFolder = processRequestTO.ClientPhysicalFolder,
                UnifiedProcessNumber = processRequestTO.UnifiedProcessNumber,
                ProcessResponsible = ToProcessResponsibleEntity(processRequestTO.Responsibles)
            });
        }
Esempio n. 12
0
        public async Task <IActionResult> AddAsync([FromBody][Required] ProcessRequestTO processRequestTO)
        {
            ProcessResponseTO responseTO = null;

            try
            {
                responseTO = await _processFacade.AddAsync(processRequestTO);
            }
            catch (ErrorsException ex)
            {
                return(BadRequest(ex.ErrorResponse));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "AddAsync", new object[] { processRequestTO });
                return(StatusCode((int)HttpStatusCode.InternalServerError, ErrorHelper.GenericError(ex)));
            }

            return(Created(nameof(AddAsync), responseTO));
        }
        private List <ErrorsTO> MaximumSizeFields(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            if (!string.IsNullOrEmpty(processRequestTO.ClientPhysicalFolder) && processRequestTO.ClientPhysicalFolder.Trim().Length > 50)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "ClientPhysicalFolder",
                    Validation = Messaging.MaximumSizeClientPhysicalFolder
                });
            }

            if (!string.IsNullOrEmpty(processRequestTO.Description) && processRequestTO.Description.Trim().Length > 1000)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "Description",
                    Validation = Messaging.MaximumSizeDescription
                });
            }

            return(errors);
        }
        private async Task <List <ErrorsTO> > ValidateResponsibles(ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            foreach (var responsibleId in processRequestTO.Responsibles)
            {
                if ((await _responsibleRepository.GetByIdAsync(responsibleId.Value)) == null)
                {
                    errors.Add(new ErrorsTO
                    {
                        Field      = "Responsibles",
                        Validation = Messaging.InvalidResponsible
                    });
                }
            }

            if (processRequestTO.Responsibles.Count > 3)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "Responsibles",
                    Validation = Messaging.ExceededLimitOfResponsible
                });
            }

            if (processRequestTO.Responsibles.GroupBy(responsibleId => responsibleId).ToList().Count != processRequestTO.Responsibles.Count)
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "Responsibles",
                    Validation = Messaging.DuplicateResponsible
                });
            }

            return(errors);
        }
Esempio n. 15
0
        public async Task <ProcessResponseTO> AddAsync(ProcessRequestTO processRequestTO)
        {
            await _processService.ValidateAddAsync(processRequestTO);

            return(await _processService.AddAsync(processRequestTO));
        }
Esempio n. 16
0
        public async Task UpdateAsync(Guid?processId, ProcessRequestTO processRequestTO)
        {
            await _processService.ValidateUpdateAsync(processId, processRequestTO);

            await _processService.UpdateAsync(processId, processRequestTO);
        }
        private async Task <List <ErrorsTO> > ValidateDoubleUnifiedProcessNumber(Guid?processId, ProcessRequestTO processRequestTO)
        {
            var errors = new List <ErrorsTO>();

            var processSpecification = new BaseSpecification <ProcessEntity>();

            processSpecification.AddCriteria(processId, process => process.Id != processId);
            processSpecification.AddCriteria(process => process.UnifiedProcessNumber.Replace("-", string.Empty).Replace(".", string.Empty) == processRequestTO.UnifiedProcessNumber.Replace("-", string.Empty).Replace(".", string.Empty));
            var listProcess = await _processRepository.ListAsync(processSpecification);

            if (listProcess.Any())
            {
                errors.Add(new ErrorsTO
                {
                    Field      = "UnifiedProcessNumber",
                    Validation = Messaging.DoubleUnifiedProcessNumber
                });
            }

            return(errors);
        }
Esempio n. 18
0
        public async Task <IActionResult> UpdateAsync([FromRoute(Name = "id")][Required] Guid?id, [FromBody][Required] ProcessRequestTO processRequestTO)
        {
            try
            {
                await _processFacade.UpdateAsync(id, processRequestTO);
            }
            catch (ErrorsException ex)
            {
                return(BadRequest(ex.ErrorResponse));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "UpdateAsync", new object[] { id, processRequestTO });
                return(StatusCode((int)HttpStatusCode.InternalServerError, ErrorHelper.GenericError(ex)));
            }

            return(Ok());
        }