public HttpResponseMessage GetAllTickets(int nApplicationID, int nUserID)
        {
            List <TakamulTicket> lstTakamulTicket = null;
            var lstTickets = this.oITicketServices.IlGetAllActiveTickets(nApplicationID, nUserID);

            if (lstTickets.Count() > 0)
            {
                lstTakamulTicket = new List <TakamulTicket>();
                foreach (var ticket in lstTickets)
                {
                    string sRemoteFilePath = string.Empty;
                    if (!string.IsNullOrEmpty(ticket.DEFAULT_IMAGE))
                    {
                        sRemoteFilePath = Path.Combine(CommonHelper.sGetConfigKeyValue(ConstantNames.RemoteFileServerPath), ticket.DEFAULT_IMAGE);
                    }

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

                    lstTakamulTicket.Add(oTakamulTicket);
                }
            }
            return(Request.CreateResponse(HttpStatusCode.OK, lstTakamulTicket));
        }
        public HttpResponseMessage GetTicketDetails(int nTicketID)
        {
            TakamulTicket   oTakamulTicket   = null;
            TicketViewModel oTicketViewModel = this.oITicketServices.oGetTicketDetails(nTicketID);

            if (oTicketViewModel != null)
            {
                string sBase64DefaultImage = string.Empty;
                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,
                    Base64DefaultImage = sBase64DefaultImage,
                    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,
                    RemoteFilePath     = sRemoteFilePath
                };
            }
            return(Request.CreateResponse(HttpStatusCode.OK, oTakamulTicket));
        }
        public HttpResponseMessage CreateTicket(TakamulTicket oTakamulTicket, int nUserID, int nLanguageID)
        {
            ApiResponse oApiResponse   = new ApiResponse();
            string      sResultMessage = string.Empty;

            if (ModelState.IsValid)
            {
                try
                {
                    string sDefaultImagePath = string.Empty;
                    if (!string.IsNullOrEmpty(oTakamulTicket.Base64DefaultImage))
                    {
                        enumFileTypes oEnumFileTypes = (enumFileTypes)Enum.Parse(typeof(enumFileTypes), oTakamulTicket.DefaultImageType.ToString());
                        switch (oEnumFileTypes)
                        {
                        case enumFileTypes.png:
                            sDefaultImagePath = CommonHelper.AppendTimeStamp("fake.png");
                            break;

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

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

                    TicketViewModel oTicketViewModel = new TicketViewModel()
                    {
                        APPLICATION_ID          = oTakamulTicket.ApplicationID,
                        TICKET_NAME             = oTakamulTicket.TicketName,
                        TICKET_DESCRIPTION      = oTakamulTicket.TicketDescription,
                        DEFAULT_IMAGE           = sDefaultImagePath,
                        TICKET_CREATED_PLATFORM = (int)Infrastructure.Core.enmTicketPlatForm.Mobile,
                        CREATED_BY = nUserID
                    };

                    Response oResponse = this.oITicketServices.oInsertTicket(oTicketViewModel, nUserID);
                    if (oResponse.nOperationResult == 1)
                    {
                        if (!string.IsNullOrEmpty(sDefaultImagePath) && !string.IsNullOrEmpty(oTakamulTicket.Base64DefaultImage))
                        {
                            FileAccessService oFileAccessService = new FileAccessService(CommonHelper.sGetConfigKeyValue(ConstantNames.FileAccessURL));
                            if (!oResponse.ResponseID.Equals("-99"))
                            {
                                Byte[] oArrImage = Convert.FromBase64String(oTakamulTicket.Base64DefaultImage);

                                MagickImage oMagickImage = new MagickImage(oArrImage);
                                oMagickImage.Format = MagickFormat.Png;
                                oMagickImage.Resize(Convert.ToInt32(CommonHelper.sGetConfigKeyValue(ConstantNames.ImageWidth)), Convert.ToInt32(CommonHelper.sGetConfigKeyValue(ConstantNames.ImageHeight)));


                                string sDirectoyPath = Path.Combine(oTakamulTicket.ApplicationID.ToString(), oResponse.ResponseID);
                                oFileAccessService.CreateDirectory(sDirectoyPath);
                                //oFileAccessService.WirteFileByte(Path.Combine(sDirectoyPath, sDefaultImagePath), oArrImage);
                                oFileAccessService.WirteFileByte(Path.Combine(sDirectoyPath, sDefaultImagePath), oMagickImage.ToByteArray());
                            }
                        }
                        oApiResponse.OperationResult = 1;
                        oApiResponse.ResponseID      = Convert.ToInt32(oResponse.ResponseID);
                        sResultMessage = nLanguageID == 2 ? "Ticket has been successfully created." : "تم إنشاء الموضوع بنجاح.";
                        oApiResponse.OperationResultMessage = sResultMessage;
                    }
                    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;
                    oApiResponse.OperationResultMessage = nLanguageID == 2 ? "An error occurred during the operation. Please try again later." : "حدث خطأ  يرجى المحاولة لاحقا مرة أخرى.";
                    return(Request.CreateResponse(HttpStatusCode.InternalServerError, oApiResponse));
                }
            }
            oApiResponse.OperationResult        = 0;
            oApiResponse.OperationResultMessage = nLanguageID == 2 ? "validation failed": "خطاء في التحقق";
            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));
        }
        public HttpResponseMessage GetHomePageData(int nApplicationID, int nUserID, int nLanguageID)
        {
            HomePageRepo         oHomePageRepo    = new HomePageRepo();
            List <TakamulTicket> lstTakamulTicket = null;

            if (nUserID != -99)
            {
                var lstTickets = this.oITicketServices.IlGetAllActiveTickets(nApplicationID, nUserID);
                if (lstTickets.Count > 0)
                {
                    lstTakamulTicket = new List <TakamulTicket>();
                    foreach (var ticket in lstTickets.OrderByDescending(x => x.ID).Take(5))
                    {
                        string sRemoteFilePath = string.Empty;
                        if (!string.IsNullOrEmpty(ticket.DEFAULT_IMAGE))
                        {
                            sRemoteFilePath = Path.Combine(CommonHelper.sGetConfigKeyValue(ConstantNames.RemoteFileServerPath), ticket.DEFAULT_IMAGE);
                        }

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

                        lstTakamulTicket.Add(oTakamulTicket);
                    }

                    oHomePageRepo.TakamulTicketList = lstTakamulTicket;
                }
            }

            List <TakamulNews> lstTakamulNews = null;
            var lstNews = this.oINewsServices.IlGetAllActiveNews(nApplicationID, nLanguageID);

            if (lstNews.Count() > 0)
            {
                lstTakamulNews = new List <TakamulNews>();
                foreach (var news in lstNews.OrderByDescending(x => x.ID).Take(5))
                {
                    string sRemoteFilePath = string.Empty;
                    if (!string.IsNullOrEmpty(news.NEWS_IMG_FILE_PATH))
                    {
                        sRemoteFilePath = Path.Combine(CommonHelper.sGetConfigKeyValue(ConstantNames.RemoteFileServerPath), news.NEWS_IMG_FILE_PATH);
                    }
                    TakamulNews oTakamulNews = new TakamulNews()
                    {
                        NewsID         = news.ID,
                        ApplicationID  = news.APPLICATION_ID,
                        NewsContent    = news.NEWS_CONTENT,
                        NewsTitle      = news.NEWS_TITLE,
                        PublishedDate  = string.Format("{0} {1}", news.PUBLISHED_DATE.ToShortDateString(), news.PUBLISHED_DATE.ToShortTimeString()),
                        RemoteFilePath = sRemoteFilePath
                    };
                    lstTakamulNews.Add(oTakamulNews);
                }
                oHomePageRepo.TakamulNewsList = lstTakamulNews;
            }

            List <TakamulEvents> lstTakamulEvents = null;
            var lstEvents = this.oIEventsServices.IlGetAllActiveEvents(nApplicationID, nLanguageID);

            if (lstEvents.Count() > 0)
            {
                lstTakamulEvents = new List <TakamulEvents>();
                foreach (var oEvent in lstEvents.OrderByDescending(x => x.ID).Take(5))
                {
                    string sRemoteFilePath = string.Empty;
                    if (!string.IsNullOrEmpty(oEvent.EVENT_IMG_FILE_PATH))
                    {
                        sRemoteFilePath = Path.Combine(CommonHelper.sGetConfigKeyValue(ConstantNames.RemoteFileServerPath), oEvent.EVENT_IMG_FILE_PATH);
                    }

                    TakamulEvents oTakamulEvents = new TakamulEvents()
                    {
                        EventID          = oEvent.ID,
                        APPLICATIONID    = oEvent.APPLICATION_ID,
                        EVENTDESCRIPTION = oEvent.EVENT_DESCRIPTION,
                        EVENTNAME        = oEvent.EVENT_NAME,
                        EVENTDATE        = string.Format("{0} {1}", oEvent.EVENT_DATE.ToShortDateString(), oEvent.EVENT_DATE.ToShortTimeString()),
                        Latitude         = oEvent.EVENT_LATITUDE,
                        Longitude        = oEvent.EVENT_LONGITUDE,
                        RemoteFilePath   = sRemoteFilePath
                    };
                    lstTakamulEvents.Add(oTakamulEvents);
                }
                oHomePageRepo.TakamulEventList = lstTakamulEvents;
            }

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