private async Task <ITResignationDTO> AddResignationItems(ITResignationDTO dto)
        {
            var resignatoinItemStatus = new List <ITResignationItemStatus>();

            foreach (var item in dto.ItemStatus)
            {
                if (dto.ManagerDecision != null && dto.ManagerDecision.Id == ((int)EnumITStatus.Executed).ToString())
                {
                    if (item.Status == null)
                    {
                        item.Status = ((int)EnumITStatus.Executed).ToString();
                    }
                }
                else if (dto.ManagerDecision != null && dto.ManagerDecision.Id == ((int)EnumITStatus.NotExecuted).ToString())
                {
                    if (item.Status == null)
                    {
                        item.Status = ((int)EnumITStatus.NotExecuted).ToString();
                    }
                }
                item.RequestId = dto.DomainModel.Id;
                item.UpdatedBy = dto.Requester.Username;
                item.Status    = ((EnumITStatus)int.Parse(item.Status)).ToString();
                var tobeAdded = Mapper.Map <ITResignationItemStatus>(item);
                resignatoinItemStatus.Add(tobeAdded);
            }

            dto.DomainModel.ITResignationItemStatus = resignatoinItemStatus;
            await _itResignationItemStatusService.AddMultiple(dto.DomainModel.ITResignationItemStatus.ToList());

            return(dto);
        }
        public async Task <ITResignationDTO> ProcessRequest(ITResignationDTO dto)
        {
            logger.LogDebug($"ProcessRequest method fired {dto.JobID} and {dto.NodeID}");

            logger.LogDebug($"TakeActivity method fired {dto.SessionId} and {dto.DomainModel.JobId} and { dto.NodeID} and {dto.EPC}");

            if (dto.activity == null)
            {
                dto.activity = await KtaService.TakeActivityAsync(dto.SessionId, dto.DomainModel.JobId, dto.NodeID, dto.EPC);
            }

            if (dto.activity.Identity.NodeId == dto.NodeID && (dto.activity.Identity.NodeId == ConstantNodes.NodeId_SharePoint || dto.activity.Identity.NodeId == ConstantNodes.NodeId_VPN || dto.activity.Identity.NodeId == ConstantNodes.NodeId_Email_AD ||
                                                               dto.activity.Identity.NodeId == ConstantNodes.NodeId_Software_Licenses || dto.activity.Identity.NodeId == ConstantNodes.NodeId_SFTP || dto.activity.Identity.NodeId == ConstantNodes.NodeId_ERP ||
                                                               dto.activity.Identity.NodeId == ConstantNodes.NodeId_FAX || dto.activity.Identity.NodeId == ConstantNodes.NodeId_TelePhone || dto.activity.Identity.NodeId == ConstantNodes.NodeId_Port || dto.activity.Identity.NodeId == ConstantNodes.NodeId_Muraslat))
            {
                await AddResignationItems(dto);
            }
            logger.LogDebug($"CompleteActivity method fired SessionId {dto.SessionId} and Username {dto.Requester.Username} and Id { dto.ManagerDecision.Id} and Comment {dto.ManagerDecision.Comment} and Identity {dto.activity.Identity}");

            await KtaService.CompleteActivityAsync(dto.SessionId, dto.Requester.Username, dto.ManagerDecision.Id, dto.ManagerDecision.Comment, dto.activity.Identity);

            return(dto);
        }
        public async Task <ITResignationDTO> SaveRequestData(ITResignationDTO dto)
        {
            logger.LogDebug("SaveRequestData method fired with these parameters");

            dto.Requester = await GetResignedEmployeeData(dto.DomainModel.EmployeeEmail);

            if (dto.Requester != null)
            {
                await AddNewRequest(dto.DomainModel);

                logger.LogDebug($"SessionId {dto.SessionId} , process ID {AppConfiguaraton.ITResignationProcessID} , DomainModel.Id {dto.DomainModel.Id} ");

                dto.DomainModel.JobId = await KtaService.CreateJobAsync(dto.SessionId, AppConfiguaraton.ITResignationProcessID, dto.DomainModel.Id);

                await UpdateKtaJobID(dto.DomainModel.Id, dto.DomainModel.JobId);
            }
            else
            {
                logger.LogDebug($"{dto.DomainModel.EmployeeEmail} Resource Not Exist", dto.Requester);
            }

            return(dto);
        }
        private async Task <ITResignationDTO> PrepareDTO(RequestDataModel data, bool reviewMode = false)
        {
            ITResignationDTO dto = new ITResignationDTO();

            dto.DomainModel = FindOneByJobId(data.JobId);


            if (reviewMode == true)
            {
                var nodeItems = _itResignationItemStatusService.GetQuerable().Where(x => x.RequestId == dto.DomainModel.Id).Include(x => x.ITResignationItem);
                dto.ItemStatus = Mapper.Map <List <ITResignationStatusModel> >(nodeItems);
            }
            else
            {
                var nodeItems = _itResingantionItemService.Find(x => x.NodeId == data.NodeId);
                dto.ItemStatus = Mapper.Map <List <ITResignationStatusModel> >(nodeItems);
            }


            dto.Requester = await GetResignedEmployeeData(dto.DomainModel.EmployeeEmail);

            return(dto);
        }