public override CommonResponse <TicketStatusVM> DeleteData(TicketStatusVM data, string transactionId)
        {
            IQueryable <TicketStatus> lastDataContext = DbContext.TicketStatuses.AsQueryable();

            if (string.IsNullOrEmpty(data?.Id))
            {
                return(new CommonResponse <TicketStatusVM>
                {
                    Status = false,
                    Code = "E-001",
                    Message = "Please fill the ID!",
                    Data = new TicketStatusVM[] { data },
                });
            }

            lastDataContext = lastDataContext.Where(u =>
                                                    u.Id.Equals(data.Id)
                                                    );

            TicketStatus lastData = lastDataContext.FirstOrDefault();

            int historySequence = lastData.TicketStatusHistories
                                  .Select(u => u.Seq)
                                  .OrderByDescending(u => u)
                                  .FirstOrDefault();

            lastData.IsDeleted = true;

            TicketStatusHistory ticketStatusHistory = new TicketStatusHistory();

            ticketStatusHistory.FillFromTicketStatus(
                lastData,
                transactionId,
                historySequence + 1,
                TableTransactionOperation.Update
                );

            DbContext.Add(ticketStatusHistory);

            if (DbContext.SaveChanges() > 0)
            {
                return(new CommonResponse <TicketStatusVM>
                {
                    Status = true,
                    Code = "S",
                    Message = "Delete Data is Success!",
                    Data = new TicketStatusVM[] { data },
                });
            }
            else
            {
                return(new CommonResponse <TicketStatusVM>
                {
                    Status = false,
                    Code = "E-003",
                    Message = "Delete Data Failed! Please Contact an Web Administrator!",
                    Data = new TicketStatusVM[] { data },
                });
            }
        }
        public override CommonResponse <TicketStatusVM> SaveData(TicketStatusVM data, string transactionId)
        {
            CommonResponse <TicketStatusVM> response = ValidateParameter(data);

            if (response != null)
            {
                return(response);
            }

            string lastId = DbContext.TicketStatuses.Select(u => u.Id).OrderByDescending(u => u).FirstOrDefault();

            TicketStatus ticketStatusData = new TicketStatus
            {
                Id   = CreateNewTicketStatusId(lastId),
                Name = data?.Name,
            };

            DbContext.Add(ticketStatusData);

            TicketStatusHistory ticketStatusHistory = new TicketStatusHistory();

            ticketStatusHistory.FillFromTicketStatus(
                ticketStatusData,
                transactionId,
                1,
                TableTransactionOperation.Insert
                );

            DbContext.Add(ticketStatusHistory);

            if (DbContext.SaveChanges() > 0)
            {
                data.Id = ticketStatusData.Id;

                return(new CommonResponse <TicketStatusVM>
                {
                    Status = true,
                    Code = "S",
                    Message = "Retrieve Data is Success!",
                    Data = new TicketStatusVM[] { data },
                });
            }
            else
            {
                return(new CommonResponse <TicketStatusVM>
                {
                    Status = false,
                    Code = "E-003",
                    Message = "Save Data Failed! Please Contact an Web Administrator!",
                    Data = new TicketStatusVM[] { data },
                });
            }
        }