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

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

            WorkflowStep WorkflowStep = ConvertDTOToEntity(WorkflowStep_WorkflowStepDTO);

            WorkflowStep = await WorkflowStepService.Create(WorkflowStep);

            WorkflowStep_WorkflowStepDTO = new WorkflowStep_WorkflowStepDTO(WorkflowStep);
            if (WorkflowStep.IsValidated)
            {
                return(WorkflowStep_WorkflowStepDTO);
            }
            else
            {
                return(BadRequest(WorkflowStep_WorkflowStepDTO));
            }
        }
        private WorkflowStep ConvertDTOToEntity(WorkflowStep_WorkflowStepDTO WorkflowStep_WorkflowStepDTO)
        {
            WorkflowStep WorkflowStep = new WorkflowStep();

            WorkflowStep.Id = WorkflowStep_WorkflowStepDTO.Id;
            WorkflowStep.WorkflowDefinitionId = WorkflowStep_WorkflowStepDTO.WorkflowDefinitionId;
            WorkflowStep.Code   = WorkflowStep_WorkflowStepDTO.Code;
            WorkflowStep.Name   = WorkflowStep_WorkflowStepDTO.Name;
            WorkflowStep.RoleId = WorkflowStep_WorkflowStepDTO.RoleId;
            WorkflowStep.SubjectMailForReject = WorkflowStep_WorkflowStepDTO.SubjectMailForReject;
            WorkflowStep.BodyMailForReject    = WorkflowStep_WorkflowStepDTO.BodyMailForReject;
            WorkflowStep.Role = WorkflowStep_WorkflowStepDTO.Role == null ? null : new Role
            {
                Id       = WorkflowStep_WorkflowStepDTO.Role.Id,
                Code     = WorkflowStep_WorkflowStepDTO.Role.Code,
                Name     = WorkflowStep_WorkflowStepDTO.Role.Name,
                StatusId = WorkflowStep_WorkflowStepDTO.Role.StatusId,
            };
            WorkflowStep.WorkflowDefinition = WorkflowStep_WorkflowStepDTO.WorkflowDefinition == null ? null : new WorkflowDefinition
            {
                Id             = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.Id,
                Code           = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.Code,
                Name           = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.Name,
                WorkflowTypeId = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.WorkflowTypeId,
                StartDate      = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.StartDate,
                EndDate        = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.EndDate,
                StatusId       = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.StatusId,
                UpdatedAt      = WorkflowStep_WorkflowStepDTO.WorkflowDefinition.UpdatedAt,
            };
            WorkflowStep.BaseLanguage = CurrentContext.Language;
            return(WorkflowStep);
        }
        public async Task <ActionResult <WorkflowStep_WorkflowStepDTO> > Get([FromBody] WorkflowStep_WorkflowStepDTO WorkflowStep_WorkflowStepDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

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

            WorkflowStep WorkflowStep = await WorkflowStepService.Get(WorkflowStep_WorkflowStepDTO.Id);

            return(new WorkflowStep_WorkflowStepDTO(WorkflowStep));
        }