public async Task <HttpResponseMessage> SaveTickets()
        {
            httpResponseMessage = new HttpResponseMessage();
            try
            {
                int    TicketId = 0, DocumentId = 0;
                string UserEmail = "";

                if (System.Web.HttpContext.Current.Request.Form.AllKeys.Length > 0)
                {
                    TicketRequest ticketRequest = new TicketRequest();
                    // Show all the key-value pairs.
                    foreach (var key in System.Web.HttpContext.Current.Request.Form.AllKeys)
                    {
                        foreach (var val in System.Web.HttpContext.Current.Request.Form.GetValues(key))
                        {
                            switch (key)
                            {
                            case "Email":
                                ticketRequest.Email = val;
                                UserEmail           = ticketRequest.Email;
                                break;

                            case "Subject":
                                ticketRequest.Subject = val;
                                break;

                            case "Message":
                                ticketRequest.Message = val;
                                break;

                            case "Department":
                                ticketRequest.Department = val;
                                break;

                            case "Priority":
                                ticketRequest.Priority = val;
                                break;

                            default:
                                break;
                            }
                        }
                    }
                    TicketId = await _IAccountService.SaveTickets(ticketRequest);
                }
                else
                {
                    httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, new { Message = CustomErrorMessages.INVALID_INPUTS, Success = false });
                    return(httpResponseMessage);
                }

                var listOfStrings = new List <string>();
                System.Web.HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files;
                if (hfc.Count > 0 && TicketId > 0)
                {
                    int iUploadedCnt = 0;
                    // CHECK THE FILE COUNT.
                    for (int iCnt = 0; iCnt <= hfc.Count - 1; iCnt++)
                    {
                        System.DateTime myDate      = DateTime.Now;
                        int             year        = myDate.Year;
                        int             month       = myDate.Month;
                        var             PartialPath = "/Uploads/Documents/" + year + "/" + month + "/";
                        var             FilePath    = "~" + PartialPath;
                        bool            exists      = System.IO.Directory.Exists(HttpContext.Current.Server.MapPath(FilePath));
                        if (!exists)
                        {
                            System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath(FilePath));
                        }
                        System.Web.HttpPostedFile hpf = hfc[iCnt];
                        if (hpf.ContentLength > 0)
                        {
                            string FileName = "Ticket_" + Guid.NewGuid().ToString() + Path.GetExtension(hpf.FileName);
                            // CHECK IF THE SELECTED FILE(S) ALREADY EXISTS IN FOLDER. (AVOID DUPLICATE)
                            if (!File.Exists(FilePath + FileName))
                            {
                                var FilePathWithFilename = Path.Combine(HttpContext.Current.Server.MapPath(FilePath), FileName);

                                // SAVE THE FILES IN THE FOLDER.
                                hpf.SaveAs(FilePathWithFilename);
                                listOfStrings.Add(FilePathWithFilename);
                                iUploadedCnt = iUploadedCnt + 1;
                                Document document = new FacePinPoint.Repository.Document();
                                document.DocumentName = FileName;
                                document.DocumentPath = PartialPath + "/" + FileName;
                                DocumentId            = await _IAccountService.SaveDocument(document);

                                if (DocumentId > 0 && TicketId > 0)
                                {
                                    TicketAttachment ticketAttachment = new TicketAttachment();
                                    ticketAttachment.DocumentId = DocumentId;
                                    ticketAttachment.TicketId   = TicketId;
                                    await _IAccountService.SaveTicketAttachment(ticketAttachment);
                                }
                            }
                        }
                    }
                }
                string[]          fileAttachment    = listOfStrings.ToArray();
                TicketMailRequest ticketMailRequest = new TicketMailRequest();
                ticketMailRequest.fileAttachments = fileAttachment;
                ticketMailRequest.ticketId        = TicketId;
                ticketMailRequest.UserEmail       = UserEmail;
                bool isMailSend = await _IAccountService.SendTicketMail(ticketMailRequest);

                if (isMailSend)
                {
                    httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, new { Message = CustomErrorMessages.TICKET_SAVED_SUCCESSFULLY, Success = true });
                }
                else
                {
                    httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, new { Message = "Mail not sent", Success = false });
                }
            }
            catch (System.Exception ex)
            {
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, new { Message = CustomErrorMessages.INTERNAL_ERROR, Success = false });
            }
            return(httpResponseMessage);
        }
Esempio n. 2
0
 public async Task <bool> SendTicketMail(TicketMailRequest TicketMail)
 {
     return(await _IAccountRepository.SendTicketMail(TicketMail));
 }