コード例 #1
0
 public async Task <bool> Delete(TicketIssueLevel TicketIssueLevel)
 {
     if (await ValidateId(TicketIssueLevel))
     {
     }
     return(TicketIssueLevel.IsValidated);
 }
コード例 #2
0
        public async Task <ActionResult <TicketIssueLevel_TicketIssueLevelDTO> > Delete([FromBody] TicketIssueLevel_TicketIssueLevelDTO TicketIssueLevel_TicketIssueLevelDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

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

            TicketIssueLevel TicketIssueLevel = ConvertDTOToEntity(TicketIssueLevel_TicketIssueLevelDTO);

            TicketIssueLevel = await TicketIssueLevelService.Delete(TicketIssueLevel);

            TicketIssueLevel_TicketIssueLevelDTO = new TicketIssueLevel_TicketIssueLevelDTO(TicketIssueLevel);
            if (TicketIssueLevel.IsValidated)
            {
                return(TicketIssueLevel_TicketIssueLevelDTO);
            }
            else
            {
                return(BadRequest(TicketIssueLevel_TicketIssueLevelDTO));
            }
        }
コード例 #3
0
 public async Task <bool> ValidateSLAPolicy(TicketIssueLevel TicketIssueLevel)
 {
     if (TicketIssueLevel.SLAPolicies != null && TicketIssueLevel.SLAPolicies.Any())
     {
         foreach (var SLAPolicy in TicketIssueLevel.SLAPolicies)
         {
             if (SLAPolicy.FirstResponseTime == null)
             {
                 SLAPolicy.AddError(nameof(TicketIssueLevelValidator), nameof(SLAPolicy.FirstResponseTime), ErrorCode.FirstResponseTimeEmpty);
             }
             if (SLAPolicy.ResolveTime == null || SLAPolicy.ResolveTime <= 0)
             {
                 SLAPolicy.AddError(nameof(TicketIssueLevelValidator), nameof(SLAPolicy.ResolveTime), ErrorCode.ResolveTimeEmpty);
             }
             else
             {
                 if (ConvertSLATimeToMenute(SLAPolicy.ResolveTime.Value, SLAPolicy.ResolveUnit) < ConvertSLATimeToMenute(SLAPolicy.FirstResponseTime.Value, SLAPolicy.FirstResponseUnit))
                 {
                     SLAPolicy.AddError(nameof(TicketIssueLevelValidator), nameof(SLAPolicy.ResolveTime), ErrorCode.ResolveTimeWrong);
                 }
             }
         }
     }
     return(TicketIssueLevel.IsValidated);
 }
コード例 #4
0
 public async Task <bool> ValidateTicketGroup(TicketIssueLevel TicketIssueLevel)
 {
     if (TicketIssueLevel.TicketGroup == null)
     {
         TicketIssueLevel.AddError(nameof(TicketIssueLevelValidator), nameof(TicketIssueLevel.TicketGroup), ErrorCode.TicketGroupEmpty);
     }
     return(TicketIssueLevel.IsValidated);
 }
コード例 #5
0
 public async Task <bool> ValidateStatus(TicketIssueLevel TicketIssueLevel)
 {
     if (StatusEnum.ACTIVE.Id != TicketIssueLevel.StatusId && StatusEnum.INACTIVE.Id != TicketIssueLevel.StatusId)
     {
         TicketIssueLevel.AddError(nameof(TicketIssueLevelValidator), nameof(TicketIssueLevel.Status), ErrorCode.StatusNotExisted);
     }
     return(TicketIssueLevel.IsValidated);
 }
コード例 #6
0
        public async Task <bool> Create(TicketIssueLevel TicketIssueLevel)
        {
            await ValidateName(TicketIssueLevel);
            await ValidateSLAPolicy(TicketIssueLevel);
            await ValidateStatus(TicketIssueLevel);
            await ValidateTicketGroup(TicketIssueLevel);

            return(TicketIssueLevel.IsValidated);
        }
コード例 #7
0
        public async Task <bool> ValidateSLA(TicketIssueLevel TicketIssueLevel)
        {
            if (TicketIssueLevel.SLA <= 0)
            {
                TicketIssueLevel.AddError(nameof(TicketIssueLevelValidator), nameof(TicketIssueLevel.SLA), ErrorCode.SLAEmpty);
            }

            return(TicketIssueLevel.IsValidated);
        }
コード例 #8
0
        public async Task <TicketIssueLevel> Get(long Id)
        {
            TicketIssueLevel TicketIssueLevel = await UOW.TicketIssueLevelRepository.Get(Id);

            if (TicketIssueLevel == null)
            {
                return(null);
            }
            return(TicketIssueLevel);
        }
コード例 #9
0
 public async Task <bool> ValidateName(TicketIssueLevel TicketIssueLevel)
 {
     if (string.IsNullOrWhiteSpace(TicketIssueLevel.Name))
     {
         TicketIssueLevel.AddError(nameof(TicketIssueLevelValidator), nameof(TicketIssueLevel.Name), ErrorCode.NameEmpty);
     }
     else if (TicketIssueLevel.Name.Length > 255)
     {
         TicketIssueLevel.AddError(nameof(TicketIssueLevelValidator), nameof(TicketIssueLevel.Name), ErrorCode.NameOverLength);
     }
     return(TicketIssueLevel.IsValidated);
 }
コード例 #10
0
        public async Task <ActionResult <TicketIssueLevel_TicketIssueLevelDTO> > Get([FromBody] TicketIssueLevel_TicketIssueLevelDTO TicketIssueLevel_TicketIssueLevelDTO)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

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

            TicketIssueLevel TicketIssueLevel = await TicketIssueLevelService.Get(TicketIssueLevel_TicketIssueLevelDTO.Id);

            return(new TicketIssueLevel_TicketIssueLevelDTO(TicketIssueLevel));
        }
コード例 #11
0
        public Customer_TicketIssueLevelDTO(TicketIssueLevel TicketIssueLevel)
        {
            this.Id = TicketIssueLevel.Id;

            this.Name = TicketIssueLevel.Name;

            this.OrderNumber = TicketIssueLevel.OrderNumber;

            this.TicketGroupId = TicketIssueLevel.TicketGroupId;

            this.StatusId = TicketIssueLevel.StatusId;

            this.SLA = TicketIssueLevel.SLA;

            this.Used = TicketIssueLevel.Used;

            this.Errors = TicketIssueLevel.Errors;
        }
コード例 #12
0
        public async Task <bool> ValidateId(TicketIssueLevel TicketIssueLevel)
        {
            TicketIssueLevelFilter TicketIssueLevelFilter = new TicketIssueLevelFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = TicketIssueLevel.Id
                },
                Selects = TicketIssueLevelSelect.Id
            };

            int count = await UOW.TicketIssueLevelRepository.Count(TicketIssueLevelFilter);

            if (count == 0)
            {
                TicketIssueLevel.AddError(nameof(TicketIssueLevelValidator), nameof(TicketIssueLevel.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
コード例 #13
0
        public Ticket_TicketIssueLevelDTO(TicketIssueLevel TicketIssueLevel)
        {
            this.Id = TicketIssueLevel.Id;

            this.Name = TicketIssueLevel.Name;

            this.OrderNumber = TicketIssueLevel.OrderNumber;

            this.TicketGroupId = TicketIssueLevel.TicketGroupId;

            this.StatusId = TicketIssueLevel.StatusId;

            this.SLA = TicketIssueLevel.SLA;

            this.Used = TicketIssueLevel.Used;

            this.TicketGroup = TicketIssueLevel.TicketGroup == null ? null : new Ticket_TicketGroupDTO(TicketIssueLevel.TicketGroup);

            this.Errors = TicketIssueLevel.Errors;
        }
コード例 #14
0
 public TicketIssueLevel_TicketIssueLevelDTO(TicketIssueLevel TicketIssueLevel)
 {
     this.Id                = TicketIssueLevel.Id;
     this.Name              = TicketIssueLevel.Name;
     this.OrderNumber       = TicketIssueLevel.OrderNumber;
     this.TicketTypeId      = TicketIssueLevel.TicketGroupId;
     this.TicketGroupId     = TicketIssueLevel.TicketGroupId;
     this.StatusId          = TicketIssueLevel.StatusId;
     this.SLA               = TicketIssueLevel.SLA;
     this.Used              = TicketIssueLevel.Used;
     this.Status            = TicketIssueLevel.Status == null ? null : new TicketIssueLevel_StatusDTO(TicketIssueLevel.Status);
     this.TicketGroup       = TicketIssueLevel.TicketGroup == null ? null : new TicketIssueLevel_TicketGroupDTO(TicketIssueLevel.TicketGroup);
     this.CreatedAt         = TicketIssueLevel.CreatedAt;
     this.UpdatedAt         = TicketIssueLevel.UpdatedAt;
     this.Errors            = TicketIssueLevel.Errors;
     this.SLAPolicies       = TicketIssueLevel.SLAPolicies?.Select(x => new TicketIssueLevel_SLAPolicyDTO(x)).ToList();
     this.SLAAlerts         = TicketIssueLevel.SLAAlerts?.Select(x => new TicketIssueLevel_SLAAlertDTO(x)).ToList();
     this.SLAAlertFRTs      = TicketIssueLevel.SLAAlertFRTs?.Select(x => new TicketIssueLevel_SLAAlertFRTDTO(x)).ToList();
     this.SLAEscalations    = TicketIssueLevel.SLAEscalations?.Select(x => new TicketIssueLevel_SLAEscalationDTO(x)).ToList();
     this.SLAEscalationFRTs = TicketIssueLevel.SLAEscalationFRTs?.Select(x => new TicketIssueLevel_SLAEscalationFRTDTO(x)).ToList();
 }
コード例 #15
0
        public async Task <TicketIssueLevel> Update(TicketIssueLevel TicketIssueLevel)
        {
            if (!await TicketIssueLevelValidator.Update(TicketIssueLevel))
            {
                return(TicketIssueLevel);
            }
            try
            {
                var oldData = await UOW.TicketIssueLevelRepository.Get(TicketIssueLevel.Id);

                await UOW.Begin();

                await UOW.TicketIssueLevelRepository.Update(TicketIssueLevel);

                await UOW.Commit();

                TicketIssueLevel = await UOW.TicketIssueLevelRepository.Get(TicketIssueLevel.Id);

                await Logging.CreateAuditLog(TicketIssueLevel, oldData, nameof(TicketIssueLevelService));

                return(TicketIssueLevel);
            }
            catch (Exception ex)
            {
                await UOW.Rollback();

                if (ex.InnerException == null)
                {
                    await Logging.CreateSystemLog(ex, nameof(TicketIssueLevelService));

                    throw new MessageException(ex);
                }
                else
                {
                    await Logging.CreateSystemLog(ex.InnerException, nameof(TicketIssueLevelService));

                    throw new MessageException(ex.InnerException);
                }
            }
        }
コード例 #16
0
        public async Task <TicketIssueLevel> Create(TicketIssueLevel TicketIssueLevel)
        {
            if (!await TicketIssueLevelValidator.Create(TicketIssueLevel))
            {
                return(TicketIssueLevel);
            }

            try
            {
                TicketIssueLevelFilter TicketIssueLevelFilter = new TicketIssueLevelFilter
                {
                    Take      = 1,
                    Selects   = TicketIssueLevelSelect.ALL,
                    OrderBy   = TicketIssueLevelOrder.OrderNumber,
                    OrderType = OrderType.DESC
                };

                await UOW.Begin();

                if (TicketIssueLevel.OrderNumber == 0)
                {
                    List <TicketIssueLevel> TicketIssueLevels = await UOW.TicketIssueLevelRepository.List(TicketIssueLevelFilter);

                    TicketIssueLevel.OrderNumber = TicketIssueLevels.Any() ? TicketIssueLevels.Max(c => c.OrderNumber) + 1 : 1;
                }
                // Nhắc nhở xử lý
                List <SLAAlert> SLAAlerts = new List <SLAAlert>();
                if (TicketIssueLevel.SLAAlerts != null && TicketIssueLevel.SLAAlerts.Any())
                {
                    foreach (var SLAAlert in TicketIssueLevel.SLAAlerts)
                    {
                        var newObj = SLAAlert;
                        newObj.RowId = Guid.NewGuid();
                        if (!newObj.Time.HasValue)
                        {
                            newObj.Time       = 15;
                            newObj.TimeUnitId = SLATimeUnitEnum.MINUTES.Id;
                        }
                        SLAAlerts.Add(newObj);
                    }
                }
                TicketIssueLevel.SLAAlerts = SLAAlerts;
                // Nhắc nhở phản hồi
                List <SLAAlertFRT> SLAAlertFRTs = new List <SLAAlertFRT>();
                if (TicketIssueLevel.SLAAlertFRTs != null && TicketIssueLevel.SLAAlertFRTs.Any())
                {
                    foreach (var SLAAlertFRT in TicketIssueLevel.SLAAlertFRTs)
                    {
                        var newObj = SLAAlertFRT;
                        newObj.RowId = Guid.NewGuid();
                        if (!newObj.Time.HasValue)
                        {
                            newObj.Time       = 15;
                            newObj.TimeUnitId = SLATimeUnitEnum.MINUTES.Id;
                        }
                        SLAAlertFRTs.Add(newObj);
                    }
                }
                TicketIssueLevel.SLAAlertFRTs = SLAAlertFRTs;
                // Cảnh báo xử lý
                List <SLAEscalation> SLAEscalations = new List <SLAEscalation>();
                if (TicketIssueLevel.SLAEscalations != null && TicketIssueLevel.SLAEscalations.Any())
                {
                    foreach (var SLAEscalation in TicketIssueLevel.SLAEscalations)
                    {
                        var newObj = SLAEscalation;
                        newObj.RowId = Guid.NewGuid();
                        if (!newObj.Time.HasValue)
                        {
                            newObj.Time       = 15;
                            newObj.TimeUnitId = SLATimeUnitEnum.MINUTES.Id;
                        }
                        SLAEscalations.Add(newObj);
                    }
                }
                TicketIssueLevel.SLAEscalations = SLAEscalations;
                // Cảnh báo phản hồi
                List <SLAEscalationFRT> SLAEscalationFRTs = new List <SLAEscalationFRT>();
                if (TicketIssueLevel.SLAEscalationFRTs != null && TicketIssueLevel.SLAEscalationFRTs.Any())
                {
                    foreach (var SLAEscalationFRT in TicketIssueLevel.SLAEscalationFRTs)
                    {
                        var newObj = SLAEscalationFRT;
                        newObj.RowId = Guid.NewGuid();
                        if (!newObj.Time.HasValue)
                        {
                            newObj.Time       = 15;
                            newObj.TimeUnitId = SLATimeUnitEnum.MINUTES.Id;
                        }
                        SLAEscalationFRTs.Add(newObj);
                    }
                }
                TicketIssueLevel.SLAEscalationFRTs = SLAEscalationFRTs;

                await UOW.TicketIssueLevelRepository.Create(TicketIssueLevel);

                await UOW.Commit();

                TicketIssueLevel = await UOW.TicketIssueLevelRepository.Get(TicketIssueLevel.Id);

                await Logging.CreateAuditLog(TicketIssueLevel, new { }, nameof(TicketIssueLevelService));

                return(TicketIssueLevel);
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    await Logging.CreateSystemLog(ex, nameof(TicketIssueLevelService));

                    throw new MessageException(ex);
                }
                else
                {
                    await Logging.CreateSystemLog(ex.InnerException, nameof(TicketIssueLevelService));

                    throw new MessageException(ex.InnerException);
                }
            }
        }
コード例 #17
0
        public async Task <ActionResult> Import(IFormFile file)
        {
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }
            StatusFilter StatusFilter = new StatusFilter
            {
                Skip    = 0,
                Take    = int.MaxValue,
                Selects = StatusSelect.ALL
            };
            List <Status> Statuses = await StatusService.List(StatusFilter);

            TicketGroupFilter TicketGroupFilter = new TicketGroupFilter
            {
                Skip    = 0,
                Take    = int.MaxValue,
                Selects = TicketGroupSelect.ALL
            };
            List <TicketGroup> TicketGroups = await TicketGroupService.List(TicketGroupFilter);

            List <TicketIssueLevel> TicketIssueLevels = new List <TicketIssueLevel>();

            using (ExcelPackage excelPackage = new ExcelPackage(file.OpenReadStream()))
            {
                ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.FirstOrDefault();
                if (worksheet == null)
                {
                    return(Ok(TicketIssueLevels));
                }
                int StartColumn         = 1;
                int StartRow            = 1;
                int IdColumn            = 0 + StartColumn;
                int NameColumn          = 1 + StartColumn;
                int OrderNumberColumn   = 2 + StartColumn;
                int TicketGroupIdColumn = 3 + StartColumn;
                int StatusIdColumn      = 4 + StartColumn;
                int SLAColumn           = 5 + StartColumn;
                int UsedColumn          = 9 + StartColumn;

                for (int i = StartRow; i <= worksheet.Dimension.End.Row; i++)
                {
                    if (string.IsNullOrEmpty(worksheet.Cells[i + StartRow, StartColumn].Value?.ToString()))
                    {
                        break;
                    }
                    string IdValue            = worksheet.Cells[i + StartRow, IdColumn].Value?.ToString();
                    string NameValue          = worksheet.Cells[i + StartRow, NameColumn].Value?.ToString();
                    string OrderNumberValue   = worksheet.Cells[i + StartRow, OrderNumberColumn].Value?.ToString();
                    string TicketGroupIdValue = worksheet.Cells[i + StartRow, TicketGroupIdColumn].Value?.ToString();
                    string StatusIdValue      = worksheet.Cells[i + StartRow, StatusIdColumn].Value?.ToString();
                    string SLAValue           = worksheet.Cells[i + StartRow, SLAColumn].Value?.ToString();
                    string UsedValue          = worksheet.Cells[i + StartRow, UsedColumn].Value?.ToString();

                    TicketIssueLevel TicketIssueLevel = new TicketIssueLevel();
                    TicketIssueLevel.Name        = NameValue;
                    TicketIssueLevel.OrderNumber = long.TryParse(OrderNumberValue, out long OrderNumber) ? OrderNumber : 0;
                    TicketIssueLevel.SLA         = long.TryParse(SLAValue, out long SLA) ? SLA : 0;
                    Status Status = Statuses.Where(x => x.Id.ToString() == StatusIdValue).FirstOrDefault();
                    TicketIssueLevel.StatusId = Status == null ? 0 : Status.Id;
                    TicketIssueLevel.Status   = Status;
                    TicketGroup TicketGroup = TicketGroups.Where(x => x.Id.ToString() == TicketGroupIdValue).FirstOrDefault();
                    TicketIssueLevel.TicketGroupId = TicketGroup == null ? 0 : TicketGroup.Id;
                    TicketIssueLevel.TicketGroup   = TicketGroup;

                    TicketIssueLevels.Add(TicketIssueLevel);
                }
            }
            TicketIssueLevels = await TicketIssueLevelService.Import(TicketIssueLevels);

            if (TicketIssueLevels.All(x => x.IsValidated))
            {
                return(Ok(true));
            }
            else
            {
                List <string> Errors = new List <string>();
                for (int i = 0; i < TicketIssueLevels.Count; i++)
                {
                    TicketIssueLevel TicketIssueLevel = TicketIssueLevels[i];
                    if (!TicketIssueLevel.IsValidated)
                    {
                        string Error = $"Dòng {i + 2} có lỗi:";
                        if (TicketIssueLevel.Errors.ContainsKey(nameof(TicketIssueLevel.Id)))
                        {
                            Error += TicketIssueLevel.Errors[nameof(TicketIssueLevel.Id)];
                        }
                        if (TicketIssueLevel.Errors.ContainsKey(nameof(TicketIssueLevel.Name)))
                        {
                            Error += TicketIssueLevel.Errors[nameof(TicketIssueLevel.Name)];
                        }
                        if (TicketIssueLevel.Errors.ContainsKey(nameof(TicketIssueLevel.OrderNumber)))
                        {
                            Error += TicketIssueLevel.Errors[nameof(TicketIssueLevel.OrderNumber)];
                        }
                        if (TicketIssueLevel.Errors.ContainsKey(nameof(TicketIssueLevel.TicketGroupId)))
                        {
                            Error += TicketIssueLevel.Errors[nameof(TicketIssueLevel.TicketGroupId)];
                        }
                        if (TicketIssueLevel.Errors.ContainsKey(nameof(TicketIssueLevel.StatusId)))
                        {
                            Error += TicketIssueLevel.Errors[nameof(TicketIssueLevel.StatusId)];
                        }
                        if (TicketIssueLevel.Errors.ContainsKey(nameof(TicketIssueLevel.SLA)))
                        {
                            Error += TicketIssueLevel.Errors[nameof(TicketIssueLevel.SLA)];
                        }
                        if (TicketIssueLevel.Errors.ContainsKey(nameof(TicketIssueLevel.Used)))
                        {
                            Error += TicketIssueLevel.Errors[nameof(TicketIssueLevel.Used)];
                        }
                        Errors.Add(Error);
                    }
                }
                return(BadRequest(Errors));
            }
        }
コード例 #18
0
        private TicketIssueLevel ConvertDTOToEntity(TicketIssueLevel_TicketIssueLevelDTO TicketIssueLevel_TicketIssueLevelDTO)
        {
            TicketIssueLevel TicketIssueLevel = new TicketIssueLevel();

            TicketIssueLevel.Id            = TicketIssueLevel_TicketIssueLevelDTO.Id;
            TicketIssueLevel.Name          = TicketIssueLevel_TicketIssueLevelDTO.Name;
            TicketIssueLevel.OrderNumber   = TicketIssueLevel_TicketIssueLevelDTO.OrderNumber;
            TicketIssueLevel.TicketGroupId = TicketIssueLevel_TicketIssueLevelDTO.TicketGroupId;
            TicketIssueLevel.TicketTypeId  = TicketIssueLevel_TicketIssueLevelDTO.TicketTypeId;
            TicketIssueLevel.StatusId      = TicketIssueLevel_TicketIssueLevelDTO.StatusId;
            TicketIssueLevel.SLA           = TicketIssueLevel_TicketIssueLevelDTO.SLA;
            TicketIssueLevel.Used          = TicketIssueLevel_TicketIssueLevelDTO.Used;
            TicketIssueLevel.Status        = TicketIssueLevel_TicketIssueLevelDTO.Status == null ? null : new Status
            {
                Id   = TicketIssueLevel_TicketIssueLevelDTO.Status.Id,
                Code = TicketIssueLevel_TicketIssueLevelDTO.Status.Code,
                Name = TicketIssueLevel_TicketIssueLevelDTO.Status.Name,
            };
            TicketIssueLevel.TicketGroup = TicketIssueLevel_TicketIssueLevelDTO.TicketGroup == null ? null : new TicketGroup
            {
                Id           = TicketIssueLevel_TicketIssueLevelDTO.TicketGroup.Id,
                Name         = TicketIssueLevel_TicketIssueLevelDTO.TicketGroup.Name,
                OrderNumber  = TicketIssueLevel_TicketIssueLevelDTO.TicketGroup.OrderNumber,
                StatusId     = TicketIssueLevel_TicketIssueLevelDTO.TicketGroup.StatusId,
                TicketTypeId = TicketIssueLevel_TicketIssueLevelDTO.TicketGroup.TicketTypeId,
                Used         = TicketIssueLevel_TicketIssueLevelDTO.TicketGroup.Used,
            };
            TicketIssueLevel.SLAPolicies = TicketIssueLevel_TicketIssueLevelDTO.SLAPolicies?.Select(p => new SLAPolicy
            {
                Id = p.Id,
                TicketIssueLevelId  = p.TicketIssueLevelId,
                TicketPriorityId    = p.TicketPriorityId,
                FirstResponseTime   = p.FirstResponseTime,
                FirstResponseUnitId = p.FirstResponseUnitId,
                FirstResponseUnit   = p.FirstResponseUnit == null ? null : new SLATimeUnit
                {
                    Id   = p.FirstResponseUnit.Id,
                    Code = p.FirstResponseUnit.Code,
                    Name = p.FirstResponseUnit.Name
                },
                ResolveTime   = p.ResolveTime,
                ResolveUnitId = p.ResolveUnitId,
                ResolveUnit   = p.ResolveUnit == null ? null : new SLATimeUnit
                {
                    Id   = p.ResolveUnit.Id,
                    Code = p.ResolveUnit.Code,
                    Name = p.ResolveUnit.Name
                },
                IsAlert         = p.IsAlert,
                IsAlertFRT      = p.IsAlertFRT,
                IsEscalation    = p.IsEscalation,
                IsEscalationFRT = p.IsEscalationFRT,
            }).ToList();
            TicketIssueLevel.SLAAlerts = TicketIssueLevel_TicketIssueLevelDTO.SLAAlerts?.Select(p => new SLAAlert
            {
                Id = p.Id,
                TicketIssueLevelId = p.TicketIssueLevelId,
                IsNotification     = p.IsNotification,
                IsMail             = p.IsMail,
                IsSMS             = p.IsSMS,
                Time              = p.Time,
                TimeUnitId        = p.TimeUnitId,
                IsAssignedToUser  = p.IsAssignedToUser,
                IsAssignedToGroup = p.IsAssignedToGroup,
                SmsTemplateId     = p.SmsTemplateId,
                MailTemplateId    = p.MailTemplateId,
                SLAAlertMails     = p.SLAAlertMails?.Select(x => new SLAAlertMail {
                    Id         = x.Id,
                    SLAAlertId = x.SLAAlertId,
                    Mail       = x.Mail
                }).ToList(),
                SLAAlertPhones = p.SLAAlertPhones?.Select(x => new SLAAlertPhone
                {
                    Id         = x.Id,
                    SLAAlertId = x.SLAAlertId,
                    Phone      = x.Phone
                }).ToList(),
                SLAAlertUsers = p.SLAAlertUsers?.Select(x => new SLAAlertUser {
                    Id         = x.Id,
                    SLAAlertId = x.SLAAlertId,
                    AppUserId  = x.AppUserId
                }).ToList()
            }).ToList();
            TicketIssueLevel.SLAAlertFRTs = TicketIssueLevel_TicketIssueLevelDTO.SLAAlertFRTs?.Select(p => new SLAAlertFRT
            {
                Id = p.Id,
                TicketIssueLevelId = p.TicketIssueLevelId,
                IsNotification     = p.IsNotification,
                IsMail             = p.IsMail,
                IsSMS             = p.IsSMS,
                Time              = p.Time,
                TimeUnitId        = p.TimeUnitId,
                IsAssignedToUser  = p.IsAssignedToUser,
                IsAssignedToGroup = p.IsAssignedToGroup,
                SmsTemplateId     = p.SmsTemplateId,
                MailTemplateId    = p.MailTemplateId,
                SLAAlertFRTMails  = p.SLAAlertFRTMails?.Select(x => new SLAAlertFRTMail
                {
                    Id            = x.Id,
                    SLAAlertFRTId = x.SLAAlertFRTId,
                    Mail          = x.Mail
                }).ToList(),
                SLAAlertFRTPhones = p.SLAAlertFRTPhones?.Select(x => new SLAAlertFRTPhone
                {
                    Id            = x.Id,
                    SLAAlertFRTId = x.SLAAlertFRTId,
                    Phone         = x.Phone
                }).ToList(),
                SLAAlertFRTUsers = p.SLAAlertFRTUsers?.Select(x => new SLAAlertFRTUser
                {
                    Id            = x.Id,
                    SLAAlertFRTId = x.SLAAlertFRTId,
                    AppUserId     = x.AppUserId
                }).ToList()
            }).ToList();
            TicketIssueLevel.SLAEscalations = TicketIssueLevel_TicketIssueLevelDTO.SLAEscalations?.Select(p => new SLAEscalation
            {
                Id = p.Id,
                TicketIssueLevelId = p.TicketIssueLevelId,
                IsNotification     = p.IsNotification,
                IsMail             = p.IsMail,
                IsSMS              = p.IsSMS,
                Time               = p.Time,
                TimeUnitId         = p.TimeUnitId,
                IsAssignedToUser   = p.IsAssignedToUser,
                IsAssignedToGroup  = p.IsAssignedToGroup,
                SmsTemplateId      = p.SmsTemplateId,
                MailTemplateId     = p.MailTemplateId,
                SLAEscalationMails = p.SLAEscalationMails?.Select(x => new SLAEscalationMail
                {
                    Id = x.Id,
                    SLAEscalationId = x.SLAEscalationId,
                    Mail            = x.Mail
                }).ToList(),
                SLAEscalationPhones = p.SLAEscalationPhones?.Select(x => new SLAEscalationPhone
                {
                    Id = x.Id,
                    SLAEscalationId = x.SLAEscalationId,
                    Phone           = x.Phone
                }).ToList(),
                SLAEscalationUsers = p.SLAEscalationUsers?.Select(x => new SLAEscalationUser
                {
                    Id = x.Id,
                    SLAEscalationId = x.SLAEscalationId,
                    AppUserId       = x.AppUserId
                }).ToList()
            }).ToList();
            TicketIssueLevel.SLAEscalationFRTs = TicketIssueLevel_TicketIssueLevelDTO.SLAEscalationFRTs?.Select(p => new SLAEscalationFRT
            {
                Id = p.Id,
                TicketIssueLevelId = p.TicketIssueLevelId,
                IsNotification     = p.IsNotification,
                IsMail             = p.IsMail,
                IsSMS                 = p.IsSMS,
                Time                  = p.Time,
                TimeUnitId            = p.TimeUnitId,
                IsAssignedToUser      = p.IsAssignedToUser,
                IsAssignedToGroup     = p.IsAssignedToGroup,
                SmsTemplateId         = p.SmsTemplateId,
                MailTemplateId        = p.MailTemplateId,
                SLAEscalationFRTMails = p.SLAEscalationFRTMails?.Select(x => new SLAEscalationFRTMail
                {
                    Id = x.Id,
                    SLAEscalationFRTId = x.SLAEscalationFRTId,
                    Mail = x.Mail
                }).ToList(),
                SLAEscalationFRTPhones = p.SLAEscalationFRTPhones?.Select(x => new SLAEscalationFRTPhone
                {
                    Id = x.Id,
                    SLAEscalationFRTId = x.SLAEscalationFRTId,
                    Phone = x.Phone
                }).ToList(),
                SLAEscalationFRTUsers = p.SLAEscalationFRTUsers?.Select(x => new SLAEscalationFRTUser
                {
                    Id = x.Id,
                    SLAEscalationFRTId = x.SLAEscalationFRTId,
                    AppUserId          = x.AppUserId
                }).ToList()
            }).ToList();
            TicketIssueLevel.BaseLanguage = CurrentContext.Language;
            return(TicketIssueLevel);
        }