public HttpResponseMessage GetMoreTicketChats(int nTicketID, int nLastTicketChatID)
        {
            TakamulTicketChat          oTakamulTicketChat = new TakamulTicketChat();
            List <TakamulTicketChat>   lstTakamulTicket   = null;
            List <TicketChatViewModel> lstTicketViewModel = this.oITicketServices.IlGetMoreTicketChats(nTicketID, nLastTicketChatID);

            if (lstTicketViewModel.Count > 0)
            {
                lstTakamulTicket = new List <TakamulTicketChat>();
                foreach (var oTicketChatItem in lstTicketViewModel)
                {
                    string sReplyMessage = string.Empty;
                    string sTicketChatItemRemoteFilePath = string.Empty;
                    if (oTicketChatItem.TICKET_CHAT_TYPE_ID != 1)
                    {
                        sTicketChatItemRemoteFilePath = Path.Combine(CommonHelper.sGetConfigKeyValue(ConstantNames.RemoteFileServerPath), oTicketChatItem.REPLY_FILE_PATH);
                    }
                    oTakamulTicketChat = new TakamulTicketChat()
                    {
                        ApplicationID      = oTicketChatItem.APPLICATION_ID,
                        TicketID           = oTicketChatItem.TICKET_ID,
                        ReplyMessage       = oTicketChatItem.REPLY_MESSAGE,
                        ReplyDate          = string.Format("{0} {1}", oTicketChatItem.REPLIED_DATE.ToShortDateString(), oTicketChatItem.REPLIED_DATE.ToShortTimeString()),
                        TicketChatID       = oTicketChatItem.ID,
                        TicketChatTypeID   = oTicketChatItem.TICKET_CHAT_TYPE_ID,
                        TicketChatTypeName = oTicketChatItem.CHAT_TYPE,
                        UserFullName       = oTicketChatItem.PARTICIPANT_FULL_NAME,
                        UserID             = oTicketChatItem.TICKET_PARTICIPANT_ID,
                        RemoteFilePath     = sTicketChatItemRemoteFilePath
                    };

                    lstTakamulTicket.Add(oTakamulTicketChat);
                }
            }

            return(Request.CreateResponse(HttpStatusCode.OK, lstTakamulTicket));
        }
        public HttpResponseMessage PostTicketChat(TakamulTicketChat oTakamulTicketChat, int nLanguageID)
        {
            ApiResponse oApiResponse   = new ApiResponse();
            string      sResultMessage = string.Empty;

            if (ModelState.IsValid)
            {
                try
                {
                    string sReplyImagePath      = string.Empty;
                    string sReplyImageDirectory = string.Empty;
                    string sFullFilePath        = string.Empty;
                    if (!string.IsNullOrEmpty(oTakamulTicketChat.Base64ReplyImage))
                    {
                        sReplyImageDirectory = Path.Combine(oTakamulTicketChat.ApplicationID.ToString(), oTakamulTicketChat.TicketID.ToString());
                        enumFileTypes oEnumFileTypes = (enumFileTypes)Enum.Parse(typeof(enumFileTypes), oTakamulTicketChat.TicketChatTypeID.ToString());
                        switch (oEnumFileTypes)
                        {
                        case enumFileTypes.png:
                            sReplyImagePath = CommonHelper.AppendTimeStamp("fake.png");
                            break;

                        case enumFileTypes.jpg:
                            sReplyImagePath = CommonHelper.AppendTimeStamp("fake.jpg");
                            break;

                        case enumFileTypes.jpeg:
                            sReplyImagePath = CommonHelper.AppendTimeStamp("fake.jpeg");
                            break;

                        case enumFileTypes.doc:
                            sReplyImagePath = CommonHelper.AppendTimeStamp("fake.doc");
                            break;

                        case enumFileTypes.docx:
                            sReplyImagePath = CommonHelper.AppendTimeStamp("fake.docx");
                            break;

                        case enumFileTypes.pdf:
                            sReplyImagePath = CommonHelper.AppendTimeStamp("fake.pdf");
                            break;
                        }
                        sFullFilePath = Path.Combine(sReplyImageDirectory, sReplyImagePath);
                    }

                    TicketChatViewModel oTicketChatViewModel = new TicketChatViewModel()
                    {
                        TICKET_ID             = oTakamulTicketChat.TicketID,
                        REPLY_MESSAGE         = oTakamulTicketChat.ReplyMessage,
                        REPLY_FILE_PATH       = sFullFilePath.Replace('\\', '/'),
                        TICKET_CHAT_TYPE_ID   = oTakamulTicketChat.TicketChatTypeID,
                        TICKET_PARTICIPANT_ID = oTakamulTicketChat.UserID
                    };

                    Response oResponse = this.oITicketServices.oInsertTicketChat(oTicketChatViewModel);
                    if (oResponse.nOperationResult == 1)
                    {
                        if (!string.IsNullOrEmpty(sFullFilePath) && !string.IsNullOrEmpty(oTakamulTicketChat.Base64ReplyImage))
                        {
                            FileAccessService oFileAccessService = new FileAccessService(CommonHelper.sGetConfigKeyValue(ConstantNames.FileAccessURL));
                            Byte[]            oArrImage          = Convert.FromBase64String(oTakamulTicketChat.Base64ReplyImage);
                            oFileAccessService.CreateDirectory(sReplyImageDirectory);

                            enumFileTypes oEnumFileTypes = (enumFileTypes)Enum.Parse(typeof(enumFileTypes), oTakamulTicketChat.TicketChatTypeID.ToString());
                            if (oEnumFileTypes == enumFileTypes.jpeg || oEnumFileTypes == enumFileTypes.jpg ||
                                oEnumFileTypes == enumFileTypes.png)
                            {
                                MagickImage oMagickImage = new MagickImage(oArrImage);
                                oMagickImage.Format = MagickFormat.Jpeg;
                                oMagickImage.Resize(Convert.ToInt32(CommonHelper.sGetConfigKeyValue(ConstantNames.ImageWidth)), Convert.ToInt32(CommonHelper.sGetConfigKeyValue(ConstantNames.ImageHeight)));
                                oFileAccessService.WirteFileByte(Path.Combine(sReplyImageDirectory, sReplyImagePath), oMagickImage.ToByteArray());
                            }
                            else
                            {
                                oFileAccessService.WirteFileByte(Path.Combine(sReplyImageDirectory, sReplyImagePath), oArrImage);
                            }
                        }
                        oApiResponse.OperationResult        = 1;
                        oApiResponse.OperationResultMessage = "Success.";
                    }
                    else
                    {
                        switch (oResponse.nOperationResult)
                        {
                        case -5:
                            oApiResponse.OperationResult = -5;
                            sResultMessage = nLanguageID == 2 ? "The Application is expired." : "انتهت صلاحية التطبيق.";
                            oApiResponse.OperationResultMessage = sResultMessage;
                            break;

                        case -6:
                            oApiResponse.OperationResult = -6;
                            sResultMessage = nLanguageID == 2 ? "OTP is not verified." : "لم يتم التحقق من رمز التفعيل.";
                            oApiResponse.OperationResultMessage = sResultMessage;
                            break;

                        case -7:
                            oApiResponse.OperationResult = -7;
                            sResultMessage = nLanguageID == 2 ? "User is blocked." : "المستخدم محضور.";
                            oApiResponse.OperationResultMessage = sResultMessage;
                            break;

                        case -8:
                            oApiResponse.OperationResult = -8;
                            sResultMessage = nLanguageID == 2 ? "Ticket submission is restricted." : "المواضيع الجديدة مقيدة.";
                            oApiResponse.OperationResultMessage = sResultMessage;
                            break;

                        case -9:
                            oApiResponse.OperationResult = -9;
                            sResultMessage = nLanguageID == 2 ? "Ticket Submission Interval Days reached." : "وصلت للفترة الزمنية لتقديم للمواضيع.";
                            oApiResponse.OperationResultMessage = sResultMessage;
                            break;

                        default:
                            oApiResponse.OperationResult = 0;
                            sResultMessage = nLanguageID == 2 ? "An error occurred during the operation. Please try again later." : "حدث خطأ  يرجى المحاولة لاحقا مرة أخرى.";
                            oApiResponse.OperationResultMessage = sResultMessage;
                            break;
                        }
                    }
                    return(Request.CreateResponse(HttpStatusCode.OK, oApiResponse));
                }
                catch (Exception ex)
                {
                    Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(ex));
                    oApiResponse.OperationResult = 0;
                    sResultMessage = nLanguageID == 2 ? "An error occurred during the operation. Please try again later." : "حدث خطأ  يرجى المحاولة لاحقا مرة أخرى.";
                    oApiResponse.OperationResultMessage = sResultMessage;
                    return(Request.CreateResponse(HttpStatusCode.InternalServerError, oApiResponse));
                }
            }
            oApiResponse.OperationResult = 0;
            sResultMessage = nLanguageID == 2 ? "An error occurred during the operation. Please try again later." : "حدث خطأ  يرجى المحاولة لاحقا مرة أخرى.";
            oApiResponse.OperationResultMessage = sResultMessage;
            return(Request.CreateResponse(HttpStatusCode.BadRequest, oApiResponse));
        }
        public HttpResponseMessage GetTicketChats(int nTicketID)
        {
            TakamulTicketChatRepo      oTakamulTicketChatRepo = new TakamulTicketChatRepo();
            List <TakamulTicketChat>   lstTakamulTicket       = null;
            List <TicketChatViewModel> lstTicketViewModel     = this.oITicketServices.IlGetTicketChats(nTicketID);

            if (lstTicketViewModel.Count > 0)
            {
                lstTakamulTicket = new List <TakamulTicketChat>();
                foreach (var oTicketChatItem in lstTicketViewModel)
                {
                    string sReplyMessage = string.Empty;
                    string sTicketChatItemRemoteFilePath = string.Empty;
                    if (oTicketChatItem.TICKET_CHAT_TYPE_ID != 1)
                    {
                        sTicketChatItemRemoteFilePath = Path.Combine(CommonHelper.sGetConfigKeyValue(ConstantNames.RemoteFileServerPath), oTicketChatItem.REPLY_FILE_PATH);
                    }
                    TakamulTicketChat oTakamulTicketChat = new TakamulTicketChat()
                    {
                        ApplicationID      = oTicketChatItem.APPLICATION_ID,
                        TicketID           = oTicketChatItem.TICKET_ID,
                        ReplyMessage       = oTicketChatItem.REPLY_MESSAGE,
                        ReplyDate          = string.Format("{0} {1}", oTicketChatItem.REPLIED_DATE.ToShortDateString(), oTicketChatItem.REPLIED_DATE.ToShortTimeString()),
                        TicketChatID       = oTicketChatItem.ID,
                        TicketChatTypeID   = oTicketChatItem.TICKET_CHAT_TYPE_ID,
                        TicketChatTypeName = oTicketChatItem.CHAT_TYPE,
                        UserFullName       = oTicketChatItem.PARTICIPANT_FULL_NAME,
                        UserID             = oTicketChatItem.TICKET_PARTICIPANT_ID,
                        RemoteFilePath     = sTicketChatItemRemoteFilePath
                    };

                    lstTakamulTicket.Add(oTakamulTicketChat);
                    oTakamulTicketChatRepo.TakamulTicketChatList = lstTakamulTicket;
                }
            }

            TicketViewModel oTicketViewModel = this.oITicketServices.oGetTicketDetails(nTicketID);
            TakamulTicket   oTakamulTicket   = null;

            if (oTicketViewModel != null)
            {
                string sRemoteFilePath = string.Empty;
                if (!string.IsNullOrEmpty(oTicketViewModel.DEFAULT_IMAGE))
                {
                    sRemoteFilePath = Path.Combine(CommonHelper.sGetConfigKeyValue(ConstantNames.RemoteFileServerPath), oTicketViewModel.DEFAULT_IMAGE);
                }

                oTakamulTicket = new TakamulTicket()
                {
                    TicketID           = oTicketViewModel.ID,
                    ApplicationID      = oTicketViewModel.APPLICATION_ID,
                    TicketCode         = oTicketViewModel.TICKET_CODE,
                    TicketName         = oTicketViewModel.TICKET_NAME,
                    TicketDescription  = oTicketViewModel.TICKET_DESCRIPTION,
                    TicketStatusID     = oTicketViewModel.TICKET_STATUS_ID,
                    TicketStatusRemark = oTicketViewModel.TICKET_STATUS_REMARK,
                    TicketStatusName   = oTicketViewModel.TICKET_STATUS_NAME,
                    CreatedDate        = string.Format("{0} {1}", oTicketViewModel.CREATED_DATE.ToShortDateString(), oTicketViewModel.CREATED_DATE.ToShortTimeString()),
                    RemoteFilePath     = sRemoteFilePath
                };
                oTakamulTicketChatRepo.TakamulTicket = oTakamulTicket;

                //TODO:: Replace with original code
                if (oTicketViewModel.TICKET_STATUS_ID == 3) //Rejected
                {
                    oTakamulTicketChatRepo.RejectReason = "reject reason from database";
                }
            }

            return(Request.CreateResponse(HttpStatusCode.OK, oTakamulTicketChatRepo));
        }