public Task ConsumeAsync(UserTicketMessage message) { System.Console.WriteLine("user {0} locked ticket {1}", message.UserId, message.TicketId); IServiceProvider service = ServiceLocator.Instance; PaymentContext _context = service.CreateScope().ServiceProvider.GetService <PaymentContext>(); PaymentItem paymentItem = new PaymentItem { UserId = message.UserId, TicketId = message.TicketId, State = "unpaid", CreateDate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), PayDate = null }; _context.PaymentItems.Add(paymentItem); _context.SaveChangesAsync(); System.Console.WriteLine("payment id is {0}", paymentItem.Id); IBus _bus = service.CreateScope().ServiceProvider.GetService <IBus>(); //发布一个信息,告诉Ticket去更新票的状态 TicketMessage ticketMessage = new TicketMessage { TicketId = paymentItem.Id, State = 3 //获得当前paymentId }; _bus.PublishAsync(ticketMessage); return(Task.CompletedTask); }
private void handleTicketMessage(NewTicketMessage newTicketMessage) { TicketMessage ticket = new TicketMessage(); ticket.clientId = newTicketMessage.clientId; ticket.sequence = databaseHandler.getNextSequence(); messageSender.sendTicket(ticket); }
public ActionResult CreateTicket(TicketVewModel model) { int cid = Convert.ToInt32(Session["cid"]); model.Status = PopulateStatus(cid); var selectedItem = model.Status.Find(p => p.Value == model.StatusName.ToString()); model.Type = PopulateType(cid); var selectedItem_t = model.Type.Find(p => p.Value == model.ticket_type.ToString()); model.Priority = (TicketPriority)model.priority_type; if (!ModelState.IsValid) { return(View(model)); } Ticket ticket = new Ticket(); ticket.ticket_subject = model.Subject; ticket.ticket_type = Convert.ToInt64(model.ticket_type); ticket.ticket_priority = (int)model.priority_type; ticket.ticket_status = selectedItem.Text.ToString(); ticket.ticket_date = DateTime.UtcNow; ticket.date_created = DateTime.UtcNow; ticket.date_modified = DateTime.UtcNow; ticket.uid = Convert.ToInt32(Session["uid"]); ticket.cid = Convert.ToInt32(Session["cid"]); ticket.custom_field_1 = model.custom_field_1; ticket.created_via = 1; ticket = ticket.CreateTicket(ticket); TicketMessage msg = new TicketMessage(); msg.Tid = ticket.Tid; msg.uid = Convert.ToInt32(Session["uid"]); msg.Message = model.Description; msg.date_created = DateTime.UtcNow; msg.date_modified = DateTime.UtcNow; msg = msg.Create(msg); var enumData = from TicketPriority e in Enum.GetValues(typeof(TicketPriority)) select new { ID = (int)e, Name = e.ToString() }; ViewBag.EnumList = new SelectList(enumData, "ID", "Name"); return(View(model)); }
public void sendTicket(TicketMessage ticket) { string json = JsonSerializer.Serialize(ticket); using (var producer = new ProducerBuilder <Null, string>(config).Build()) { producer.Produce(ticketTopic, new Message <Null, string> { Value = json }); producer.Flush(); } }
public TicketMessage AddTicketMessage(AddTicketMessageReq model) { //Take user and check if it exists var user = _context.Users .Where(u => u.Id == model.UserId) .SingleOrDefault(); if (user == null) { return(null); } //Take ticket and check if it exists var ticket = _context.Tickets .Where(t => t.Id == model.TicketId) .SingleOrDefault(); if (ticket == null || ticket.Status == "closed") { return(null); } //Open ticket if the replyer is admin if (user.IsAdmin == true) { ticket.Status = "opened"; } //Update ticket's last action date ticket.LastActionDate = DateTime.Now; _context.SaveChanges(); //Build ticket message data TicketMessage ticketMessage = new TicketMessage { Id = 0, Date = DateTime.Now, User = user, Ticket = ticket, Content = model.Content }; //Add ticket message _context.TicketMessages.Add(ticketMessage); _context.SaveChanges(); //Check if it is added succesfuly if (ticketMessage.Id == 0) { return(null); } return(ticketMessage); }
public Ticket AddTicket(CreateTicketReq model) { Ticket ticket = new Ticket(); //Take the user var user = _context.Users .Where(u => u.Id == model.UserId) .SingleOrDefault(); //Check if user is admin or does not exist if (user == null || user.IsAdmin == true) { return(null); } //Set ticket data ticket.Id = 0; ticket.LastActionDate = DateTime.Now; ticket.OriginDate = DateTime.Now; ticket.Title = model.Title; ticket.User = user; ticket.Status = "requested"; //Add ticket _context.Tickets.Add(ticket); _context.SaveChanges(); if (ticket.Id == 0) { return(null); } //Set first ticket message data TicketMessage msg = new TicketMessage { Id = 0, Date = DateTime.Now, Content = model.Content, User = user, Ticket = ticket }; //Add first ticket message _context.TicketMessages.Add(msg); _context.SaveChanges(); if (msg.Id == 0) { return(null); } return(ticket); }
public async Task <Unit> Handle(CreateTicketCommand request, CancellationToken cancellationToken) { var ticket = new Ticket { Topic = request.Topic, Status = TicketStatus.Open }; var ticketMessage = new TicketMessage { Text = request.Description }; ticket.Messages.Add(ticketMessage); _context.Tickets.Add(ticket); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public static List <TicketMessage> GetTicketMessages(string htmlContent, int dateFormatId) { MatchCollection matches; htmlContent = htmlContent.Replace(" ", ""); Regex obRegEx = new Regex(@"<tr>\r\n\s*<td\sclass='head'\swidth='15'\salign='center'><img\ssrc='style/images/ip\.gif'\swidth='12'\sheight='11'\stitle='(?<IpAddress>.*?)'></td>\r\n\s*<td\sclass='head'\scolspan='2'><b>(?<Nick>.*?)</b></td>\r\n\s*<td\sclass='head'\salign='right'\swidth='150'>(?<DateTime>.*?)</td>\r\n\s*</tr>\r\n\s*(<tr>\r\n\s*<td\sclass='text'></td>\r\n\s*<td\sclass='text'><b>.*?</b></td>\r\n\s*<td\sclass='text'\scolspan='2'>.*?</td>\r\n\s*</tr>\r\n\s*<tr><td\sclass='text'\scolspan='4'></td></tr>\r\n\s*)?<tr>\r\n\s*<td\sclass='text'></td>\r\n\s*<td\sclass='text'\svalign='top'\swidth='150'><b>.*?</b></td>\r\n\s*<td\sclass='text'\scolspan='2'><div\sstyle='width:640px;'>(?<Message>.*?)</div></td>\r\n\s*</tr>"); //Regex obRegEx = new Regex(@"<tr>\r\n\s*<td\sclass='head'\swidth='15'\salign='center'><img\ssrc='style/images/ip\.gif'\swidth='12'\sheight='11'\stitle='(?<IpAddress>.*?)'></td>\r\n\s*<td\sclass='head'\scolspan='2'><b>(?<Nick>.*?)</b></td>\r\n\s*<td\sclass='head'\salign='right'\swidth='150'>(?<DateTime>\d{4}-\d{2}-\d{2},?\s*\d{2}:\d{2})</td>\r\n\s*</tr>\r\n\s*(<tr>\r\n\s*<td\sclass='text'></td>\r\n\s*<td\sclass='text'><b>Subject</b></td>\r\n\s*<td\sclass='text'\scolspan='2'>.*?</td>\r\n\s*</tr>\r\n\s*<tr><td\sclass='text'\scolspan='4'></td></tr>\r\n\s*)?<tr>\r\n\s*<td\sclass='text'></td>\r\n\s*<td\sclass='text'\svalign='top'\swidth='150'><b>Message</b></td>\r\n\s*<td\sclass='text'\scolspan='2'><div\sstyle='width:640px;'>(?<Message>.*?)</div></td>\r\n\s*</tr>"); matches = obRegEx.Matches(htmlContent); List <TicketMessage> ticketMessageList = new List <TicketMessage>(); foreach (Match match in matches) { TicketMessage message = new TicketMessage(); GroupCollection groups = match.Groups; message.IpAddress = groups["IpAddress"].Value.Trim(); message.NickName = groups["Nick"].Value.Trim(); message.Message = ReplaceHTMLEntities(groups["Message"].Value.Trim()); message.MessageDateTime = ConvertToDatetimeTicket(dateFormatId, groups["DateTime"].Value.Trim()); ticketMessageList.Add(message); } return(ticketMessageList); }
public async Task <string> Post([FromBody] Paying paying) { var paymentItem = await _context.PaymentItems.FindAsync(paying.Id); if (paymentItem == null) { return("there is no payment id:" + paying.Id); } if (paying.opertion.Equals("pay")) { if (!paymentItem.State.Equals("unpaid")) { return("payment id " + paying.Id + " is not unpaid"); } paymentItem.State = "paid"; paymentItem.PayDate = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); _context.Entry(paymentItem).State = EntityState.Modified; await _context.SaveChangesAsync(); //发布一个信息,告诉Ticket去更新票的状态 TicketMessage ticketMessage = new TicketMessage { TicketId = paymentItem.TicketId, State = 1 }; await _bus.PublishAsync(ticketMessage); string mess = "payment id " + paying.Id + " is paid and ticket " + paymentItem.TicketId + " is sold now"; return(mess); } else if (paying.opertion.Equals("cancel")) { if (!paymentItem.State.Equals("unpaid")) { return("payment id " + paying.Id + " is not unpaid"); } paymentItem.State = "cancelled"; _context.Entry(paymentItem).State = EntityState.Modified; await _context.SaveChangesAsync(); //发布一个信息,告诉Ticket去更新票的状态 TicketMessage ticketMessage = new TicketMessage { TicketId = paymentItem.TicketId, State = 2 }; await _bus.PublishAsync(ticketMessage); string mess = "payment id " + paying.Id + " is cancelled and ticket " + paymentItem.TicketId + " is available now"; return(mess); } else if (paying.opertion.Equals("refund")) { if (!paymentItem.State.Equals("paid")) { return("payment id " + paying.Id + " is not paid"); } paymentItem.State = "refund"; _context.Entry(paymentItem).State = EntityState.Modified; await _context.SaveChangesAsync(); //发布一个信息,告诉Ticket去更新票的状态 TicketMessage ticketMessage = new TicketMessage { TicketId = paymentItem.TicketId, State = 2 }; await _bus.PublishAsync(ticketMessage); string mess = "payment id " + paying.Id + " is refund and ticket " + paymentItem.TicketId + " is available now"; return(mess); } else { string mess = "opertion should be pay, cancel or refund "; return(mess); } }
/// <summary> /// /// </summary> /// <returns></returns> //public ActionResult Message(int? id) //{ // using (var db = new KiaGalleryContext()) // { // ViewBag.UserList = db.User.Where(x => x.Branch.BranchType == BranchType.Branch || x.Branch.BranchType == BranchType.Other).ToList(); // } // ViewBag.Id = id; // return View(); //} /// <summary> /// /// </summary> /// <returns></returns> //public ActionResult List() //{ // return View(); //} /// <summary> /// /// </summary> /// <param name="model"></param> /// <returns></returns> public JsonResult Save(TicketViewModel model) { Response response; var currentUser = GetAuthenticatedUser(); try { if (model.toUserId == currentUser.Id) { response = new Response() { status = 500, message = "شما نمیتوانید به این کاربر پیام بدهید;" }; return(Json(response, JsonRequestBehavior.AllowGet)); } using (var db = new KiaGalleryContext()) { if (model.id != null && model.id > 0) { var entity = db.TicketMessage.Where(x => x.Id == model.id).Single(); entity.Text = model.text; entity.ModifyUserId = currentUser.Id; entity.ModifyDate = DateTime.Now; entity.Ip = Request.UserHostAddress; db.SaveChanges(); response = new Response() { status = 200, }; } else { if (model.ticketId != null && model.ticketId > 0) { var ticket = db.Ticket.Single(x => x.Id == model.ticketId); if (currentUser.Id == ticket.ToUserId) { ticket.TicketStatus = TicketStatus.Opened; } var ticketMessage = new TicketMessage() { TicketId = model.ticketId.Value, FileName = model.fileName, Text = model.text, CreateUserId = currentUser.Id, ModifyUserId = currentUser.Id, CreateDate = DateTime.Now, ModifyDate = DateTime.Now, }; var notification = new Notification() { Seen = false, TicketId = model.ticketId.Value, UserId = ticket.ToUserId.Value, CreateUserId = currentUser.Id, CreateDate = DateTime.Now, }; //Task.Factory.StartNew(() => //{ // NikSmsWebServiceClient.SendSmsNik("همکار گرامی شما یک تیکت جدید دارید لطفا جهت پاسخ،به پورتال کیا گالری مراجعه فرمایید." + "\n" + model.title, ticket.ToUser.PhoneNumber); //}); db.Notification.Add(notification); db.TicketMessage.Add(ticketMessage); db.SaveChanges(); response = new Response() { status = 200, data = ticketMessage.TicketId }; } else { var ticketItem = new Ticket() { Title = model.title, FromUserId = currentUser.Id, DepartmentId = model.departmentId, ToUserId = model.toUserId, TicketStatus = TicketStatus.New, CreateUserId = currentUser.Id, ModifyUserId = currentUser.Id, CreateDate = DateTime.Now, ModifyDate = DateTime.Now, }; var ticketMessage = new TicketMessage() { Ticket = ticketItem, Text = model.text, FileName = model.fileName, CreateUserId = currentUser.Id, ModifyUserId = currentUser.Id, CreateDate = DateTime.Now, ModifyDate = DateTime.Now, }; var notification = new Notification() { Seen = false, Ticket = ticketItem, UserId = ticketItem.ToUserId.Value, CreateUserId = currentUser.Id, CreateDate = DateTime.Now, }; db.Notification.Add(notification); db.Ticket.Add(ticketItem); db.TicketMessage.Add(ticketMessage); db.SaveChanges(); var ToUserPhoneNumber = db.User.Single(x => x.Id == model.toUserId).PhoneNumber; Task.Factory.StartNew(() => { NikSmsWebServiceClient.SendSmsNik("همکار گرامی شما یک تیکت جدید دارید لطفا جهت پاسخ،به پورتال کیا گالری مراجعه فرمایید." + "\n" + model.title, ToUserPhoneNumber); }); response = new Response() { status = 200, message = "تیکت شما با موفقیت ارسال شد." }; } } } } catch (Exception ex) { response = Core.GetExceptionResponse(ex); } return(Json(response, JsonRequestBehavior.AllowGet)); }
private void handleTicketMessage(TicketMessage ticketMessage) { databaseHandler.updateSequence(ticketMessage.clientId, ticketMessage.sequence); }