public async Task <ActionResult <WorkflowDirection_WorkflowDirectionDTO> > Create([FromBody] WorkflowDirection_WorkflowDirectionDTO WorkflowDirection_WorkflowDirectionDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            if (!await HasPermission(WorkflowDirection_WorkflowDirectionDTO.Id))
            {
                return(Forbid());
            }

            WorkflowDirection WorkflowDirection = ConvertDTOToEntity(WorkflowDirection_WorkflowDirectionDTO);

            WorkflowDirection = await WorkflowDirectionService.Create(WorkflowDirection);

            WorkflowDirection_WorkflowDirectionDTO = new WorkflowDirection_WorkflowDirectionDTO(WorkflowDirection);
            if (WorkflowDirection.IsValidated)
            {
                return(WorkflowDirection_WorkflowDirectionDTO);
            }
            else
            {
                return(BadRequest(WorkflowDirection_WorkflowDirectionDTO));
            }
        }
        private WorkflowDirection ConvertDTOToEntity(WorkflowDirection_WorkflowDirectionDTO WorkflowDirection_WorkflowDirectionDTO)
        {
            WorkflowDirection WorkflowDirection = new WorkflowDirection();

            WorkflowDirection.Id = WorkflowDirection_WorkflowDirectionDTO.Id;
            WorkflowDirection.WorkflowDefinitionId   = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinitionId;
            WorkflowDirection.FromStepId             = WorkflowDirection_WorkflowDirectionDTO.FromStepId;
            WorkflowDirection.ToStepId               = WorkflowDirection_WorkflowDirectionDTO.ToStepId;
            WorkflowDirection.SubjectMailForCreator  = WorkflowDirection_WorkflowDirectionDTO.SubjectMailForCreator;
            WorkflowDirection.SubjectMailForNextStep = WorkflowDirection_WorkflowDirectionDTO.SubjectMailForNextStep;
            WorkflowDirection.BodyMailForCreator     = WorkflowDirection_WorkflowDirectionDTO.BodyMailForCreator;
            WorkflowDirection.BodyMailForNextStep    = WorkflowDirection_WorkflowDirectionDTO.BodyMailForNextStep;
            WorkflowDirection.UpdatedAt              = WorkflowDirection_WorkflowDirectionDTO.UpdatedAt;
            WorkflowDirection.FromStep               = WorkflowDirection_WorkflowDirectionDTO.FromStep == null ? null : new WorkflowStep
            {
                Id = WorkflowDirection_WorkflowDirectionDTO.FromStep.Id,
                WorkflowDefinitionId = WorkflowDirection_WorkflowDirectionDTO.FromStep.WorkflowDefinitionId,
                Name   = WorkflowDirection_WorkflowDirectionDTO.FromStep.Name,
                Code   = WorkflowDirection_WorkflowDirectionDTO.FromStep.Code,
                RoleId = WorkflowDirection_WorkflowDirectionDTO.FromStep.RoleId,
                SubjectMailForReject = WorkflowDirection_WorkflowDirectionDTO.FromStep.SubjectMailForReject,
                BodyMailForReject    = WorkflowDirection_WorkflowDirectionDTO.FromStep.BodyMailForReject,
            };
            WorkflowDirection.ToStep = WorkflowDirection_WorkflowDirectionDTO.ToStep == null ? null : new WorkflowStep
            {
                Id = WorkflowDirection_WorkflowDirectionDTO.ToStep.Id,
                WorkflowDefinitionId = WorkflowDirection_WorkflowDirectionDTO.ToStep.WorkflowDefinitionId,
                Code   = WorkflowDirection_WorkflowDirectionDTO.ToStep.Code,
                Name   = WorkflowDirection_WorkflowDirectionDTO.ToStep.Name,
                RoleId = WorkflowDirection_WorkflowDirectionDTO.ToStep.RoleId,
                SubjectMailForReject = WorkflowDirection_WorkflowDirectionDTO.ToStep.SubjectMailForReject,
                BodyMailForReject    = WorkflowDirection_WorkflowDirectionDTO.ToStep.BodyMailForReject,
            };
            WorkflowDirection.WorkflowDefinition = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition == null ? null : new WorkflowDefinition
            {
                Id             = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.Id,
                Code           = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.Code,
                Name           = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.Name,
                WorkflowTypeId = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.WorkflowTypeId,
                StartDate      = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.StartDate,
                EndDate        = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.EndDate,
                StatusId       = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.StatusId,
                UpdatedAt      = WorkflowDirection_WorkflowDirectionDTO.WorkflowDefinition.UpdatedAt,
            };
            WorkflowDirection.BaseLanguage = CurrentContext.Language;
            return(WorkflowDirection);
        }
        public async Task <ActionResult <WorkflowDirection_WorkflowDirectionDTO> > Get([FromBody] WorkflowDirection_WorkflowDirectionDTO WorkflowDirection_WorkflowDirectionDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            if (!await HasPermission(WorkflowDirection_WorkflowDirectionDTO.Id))
            {
                return(Forbid());
            }

            WorkflowDirection WorkflowDirection = await WorkflowDirectionService.Get(WorkflowDirection_WorkflowDirectionDTO.Id);

            return(new WorkflowDirection_WorkflowDirectionDTO(WorkflowDirection));
        }