public void Setup() { this.entity = new MessageResponse(); this.model = new MessageResponseModel(); this.mapper = new MessageResponseMapper(); }
public static async Task <MessageResponseModel> GetMessageResponse(string token, int mpId, int messageId) { MessageResponseModel result = null; var url = JobConfig.AppSettings["GetMessageResultUrl"]; var handler = new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.None }; using (HttpClient httpclient = new HttpClient(handler)) { httpclient.BaseAddress = new Uri(url); var content = new FormUrlEncodedContent(new Dictionary <string, string>() { { "token", token }, { "mpId", mpId.ToString() }, { "messageId", messageId.ToString() } }); var response = await httpclient.PostAsync(url, content); string responseString = await response.Content.ReadAsStringAsync(); result = JsonConvert.DeserializeObject <MessageResponseModel>(responseString); } return(result); }
public async void AcceptTask(string UserLineId, string AppNo) { PushLineResponseModel response = new PushLineResponseModel(); MessageResponseModel message = new MessageResponseModel(); string strmessage = ""; dt = new DataTable(); dt = DAC.REST_UpdateStatusApp(UserLineId, AppNo); try { if (dt.Rows.Count > 0) { strmessage = template.AcceptTaskMessage(); strmessage = string.Format(strmessage, dt.Rows[0]["User_Name"].ToString(), dt.Rows[0]["Application_No"].ToString(), dt.Rows[0]["Application_DealerName"].ToString(), dt.Rows[0]["User_PhoneNumber"].ToString()); message = api.SetMessage(strmessage); response.to = dt.Rows[0]["Application_CreateBy"].ToString(); response.messages.Add(message); await api.CallApi(response); DAC.REST_KeepEventTransaction("AcceptTask", response.to, "CheckerController -> AcceptTask", "[59]"); } else { DAC.REST_KeepEventTransaction("AcceptTask", AppNo, "CheckerController -> AcceptTask is Empty", "REST_UpdateStatusApp " + UserLineId + ", " + AppNo); } } catch (Exception e) { DAC.REST_KeepEventTransaction("AcceptTask", AppNo, "CheckerController -> AcceptTask", e.StackTrace); } }
public async Task <IActionResult> CheckerAcceptTask(ExternalRequest request) { PushLineResponseModel response = new PushLineResponseModel(); MessageResponseModel message = new MessageResponseModel(); LineMessageTemplate template = new LineMessageTemplate(); dt = new DataTable(); DAC.REST_KeepEventTransaction("CheckerAcceptTask", func.JsonSerialize(request), "CheckerAcceptTask", "[487]"); dt = DAC.CheckApplicationNo(request.AppNo); if (dt.Rows.Count > 0) { dtifExists = new DataTable(); dtifExists = DAC.REST_CheckAceptTaskExisting(request.AppNo); try { if (dtifExists.Rows.Count > 0) { if (!string.IsNullOrEmpty(dtifExists.Rows[0]["Application_Responsibility"].ToString())) { message = api.SetMessage("ไม่สามารถทำรายการได้เนื่องจากมีคนกดรับงานไปแล้ว"); response.to = request.LineUserId; response.messages.Add(message); await api.CallApi(response); DAC.REST_KeepEventTransaction("CheckerAcceptTask", response.to, "DealerController -> CallApi", "[496]"); return(Ok()); } } else { DAC.REST_KeepEventTransaction("CheckerAcceptTask", request.AppNo, "DealerController -> REST_CheckAceptTaskExisting is Empty", "REST_CheckAceptTaskExisting " + request.AppNo); } try { checker.AcceptTask(request.LineUserId, request.AppNo); message = api.SetMessage("บันทึกข้อมูลสำเร็จ"); response.to = request.LineUserId; response.messages.Add(message); await api.CallApi(response); DAC.REST_KeepEventTransaction("CheckerAcceptTask", response.to, "DealerController -> CallApi", "[511]"); } catch (Exception e) { DAC.REST_KeepEventTransaction("CheckerAcceptTask", request.AppNo, "DealerController -> AcceptTask", e.StackTrace); } } catch (Exception e) { DAC.REST_KeepEventTransaction("CheckerAcceptTask", request.AppNo, "DealerController -> REST_CheckApplicationNo", e.StackTrace); } return(Ok()); } else { DAC.REST_KeepEventTransaction("CheckerAcceptTask", request.AppNo, "DealerController -> REST_CheckApplicationNo is Empty", "REST_CheckApplicationNo " + request.AppNo); } return(Ok()); }
public MessageResponseModel SetMessage(string txtmessage, string type = "text") { MessageResponseModel message = new MessageResponseModel(); message.type = type; message.text = txtmessage; return(message); }
private async Task LogMessage(ThreadEntity thread, MessageResponseModel message, DateTime?readAt) { var log = _mapper.Map <LogEntity>(thread); log = _mapper.Map(message, log, options => options.Items[MappingConstants.RecipientUserId] = thread.Type == ThreadType.User ? message.FromUserId : 0); log.Id = new Guid(); log.RecepientName = thread.Name; log.SenderName = message.FromUserName; log.CreatedAt = message.CreatedAt; log.IsArchived = thread.ArchivedBy.Count == 0 ? false : true; if (message.ReadBy.Contains(log.SenderId) && message.ReadBy.Count == 1) { log.IsRead = false; } else if (message.ReadBy.Count > 1) { log.IsRead = true; } if (log.IsArchived == false) { log.ArchivedAt = null; } else { log.ArchivedAt = thread.ModifiedAt; } if (log.IsRead == false) { log.ReadAt = null; } else { log.ReadAt = readAt; } switch (thread.Type) { case ThreadType.User: log.RecipientId = thread.Participants[1]; break; case ThreadType.Group: log.RecipientId = 0; break; case ThreadType.Team: log.RecipientId = thread.TeamId; break; default: log.RecipientId = 0; break; } await _logRepository.CreateAsync(log); }
public void UpdatingATextModelShouldUpdateEntity() { MessageResponseModel model = new MessageResponseModel(); this.viewModel.Responses.Add(model); this.viewModel.IsSelected = true; model.Timeout = 1; this.repository.Verify(r => r.AddOrUpdate(It.IsAny <MessageResponse>())); this.mapper.Verify(r => r.MapToEntity(model, It.IsAny <MessageResponse>())); }
public async Task <IActionResult> NoticeTracking(ExternalNotice request) { PushLineResponseMultiCastModel response = new PushLineResponseMultiCastModel(); MessageResponseModel message = new MessageResponseModel(); LineMessageTemplate template = new LineMessageTemplate(); dt = new DataTable(); DAC.REST_KeepEventTransaction("NoticeTracking", func.JsonSerialize(request), "NoticeTracking", "[436]"); string msg = template.MessageNotice(request.State, request); string statecancel; message.type = "text"; message.text = msg; response.messages.Add(message); if (request.State == "cancel" && string.IsNullOrEmpty(request.CheckerName)) { // Dealer Cancel request.State = "dealerupdate"; } else if (request.State == "cancel" && !string.IsNullOrEmpty(request.CheckerName)) { // Checker Cancel request.State = "checkerupdate"; } dt = DAC.REST_GetUserforNotice(request.ApplicationNo, request.State); try { if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { response.to.Add(dt.Rows[i]["Receiver"].ToString()); } await api.CallApiMultiCast(response); DAC.REST_KeepEventTransaction("NoticeTracking", func.JsonSerialize(response.to), "DealerController -> CallApiMultiCast", "[461]"); } else { DAC.REST_KeepEventTransaction("NoticeTracking", request.ApplicationNo, "DealerController -> REST_GetUserforNotice is Empty", "REST_UpdateStatusApp " + request.ApplicationNo + ", " + request.State); } } catch (Exception e) { DAC.REST_KeepEventTransaction("NoticeTracking", request.ApplicationNo, "DealerController", e.StackTrace); } return(Ok()); }
public void RemoveResponseCommandShouldRemoveResponse(string id) { MessageResponseModel model = new MessageResponseModel { Id = id }; this.viewModel.Responses.Add(model); this.viewModel.RemoveResponseCommand.Execute(model); Assert.AreEqual(0, this.viewModel.Responses.Count); this.repository.Verify(r => r.Remove(id)); }
public static MessageResponseModel GetMessagesFromData(IbaCmsDbContext cmsDb, decimal ibaUserId, MessageRequestModel model) { var result = new MessageResponseModel(); IQueryable <AppUserMessage> msgs; if (model.AppUserMessageId > 0) { msgs = cmsDb.AppUserMessages.Where(a => a.Id == model.AppUserMessageId).AsQueryable(); result.TotalRecords = msgs.Count(); } else { msgs = cmsDb.AppUserMessages.Where(a => a.DeviceOwner.IbaId == ibaUserId && a.Deleted == null && a.Message.SendDate < DateTime.UtcNow) .Where(a => (model.From.HasValue && a.Created > model.From.Value) || !model.From.HasValue) .OrderByDescending(a => a.Created) .AsQueryable(); result.TotalRecords = msgs.Count(); if (model.Start > 0) { msgs = msgs.Skip(model.Start); } if (model.Length <= 0) { model.Length = DefaultPageSize; } msgs = msgs.Take(model.Length); } foreach (var msg in msgs.ToList()) { var item = new AppUserMessagesResponseItem { AppUserMessageId = msg.Id, Title = msg.Message.Title, MessageType = msg.Message.MessageType, Text = msg.Message.Text, Url = msg.Message.Url ?? "", FormattedDate = msg.Message.SendDate.HasValue ? DateTime.SpecifyKind(msg.Message.SendDate.Value, DateTimeKind.Utc) : DateTime.SpecifyKind(msg.Created, DateTimeKind.Utc) }; if (msg.Deleted != null) { item.Status = AppUserMessagesResponseStatus.Deleted; } else if (msg.Read != null) { item.Status = AppUserMessagesResponseStatus.Read; } result.Messages.Add(item); } return(result); }
public void MessageResponse_Constructor() { // Arrange var model = new MessageResponseModel() { MessageId = Guid.NewGuid(), Tag = "tag" }; // Act var response = new MessageResponse(model); // Assert response.MessageId.Should().Be(model.MessageId); response.Tag.Should().Be(model.Tag); response.To.Should().BeEmpty(); }
/// <summary> /// Synchronization users messages /// </summary> public void SynchronizeChatsMessages(MessageResponseModel message) { var chatUsers = _mainLogic.GetChatUsers(message.ChatId); var onlineUsers = _connectedClients.Where(ou => ou.Id != message.UserId && chatUsers.FirstOrDefault(u => u.Id == ou.Id) != null); Parallel.ForEach(onlineUsers, (ou) => { _logger.Info($"Sync chat message {message.Id}: {message.UserMassage} for user {ou.Id} by user {message.UserId} from chat {message.ChatId}"); var responseJson = _jsonStringSerializer.Serialize(new OperationResultInfo() { ErrorInfo = string.Empty, ToListener = ListenerType.ChatsMessagesListener, OperationResult = OperationsResults.Successfully, JsonData = _jsonStringSerializer.Serialize(message) }); ou.SendMessage(_encoder.Encryption(responseJson)); //ou.SendMessage(responseJson); }); }
public void MessageResponse_WithTo_Constructor() { // Arrange var model = new MessageResponseModel() { MessageId = Guid.NewGuid(), Tag = "tag", To = new[] { "one", "two" } }; // Act var response = new MessageResponse(model); // Assert response.MessageId.Should().Be(model.MessageId); response.Tag.Should().Be(model.Tag); response.To.Count().Should().Be(2); response.To.First().Should().Be("one"); response.To.Last().Should().Be("two"); }
public SuccessfullOperated<MessageResponseModel> Update(int id, MessageResponseModel model) { var successfullOperated = new SuccessfullOperated<MessageResponseModel>() { IsSuccessfull = false, Element = model }; var modelFromDb = this.data.Messages .All() .FirstOrDefault(m => m.Id == id); if (modelFromDb == null) { return successfullOperated; } if (model.Author != null) { modelFromDb.Author = model.Author; } if (!string.IsNullOrEmpty(model.Content)) { modelFromDb.Content = model.Content; } if (model.FriendshipId != modelFromDb.FriendshipId && model.FriendshipId != 0) { modelFromDb.FriendshipId = model.FriendshipId; } this.data.SaveChanges(); successfullOperated.IsSuccessfull = true; return successfullOperated; }
public async Task <IActionResult> Webhook(LineRequestModel request) { LineResponseModel response = new LineResponseModel(); LineCardTemplateResponseModel cardResponse = new LineCardTemplateResponseModel(); BubbleMain bubble = new BubbleMain(); dupBubbleMain dupbubble = new dupBubbleMain(); MessageResponseModel message = new MessageResponseModel(); StickerModel sticker = new StickerModel(); StickerMessageModel stickerMessage = new StickerMessageModel(); CarouselMain master = new CarouselMain(); DateTime date; Task <UserProfile> profile; string holyType = "text"; decimal txtnumber; string strMessage = ""; profile = api.GetUserProfile(request.events[0].source.userId); if (profile.Result != null) { action.SP_InsertUserFollow( request.events[0].source.userId, profile.Result.displayName, profile.Result.pictureUrl, profile.Result.statusMessage, profile.Result.language ); } if (request.events[0].message == null) { request.events[0].message = new MessageModel(); } // KeepLog action.SP_InsertLogRequestMessage( request.events[0].type, request.destination, request.events[0].mode, request.events[0].type == "message" ? request.events[0].message.text : "", func.JsonSerialize(request), DateTime.Now, request.events[0].source.userId, request.events[0].source.userId ); if (request.events[0].message.text == "เช็คยอดคงเหลือ") { customer.REST_InitialStep(request.events[0].source.userId, "1", ""); strMessage = "รบกวนให้ลูกค้า กรอกข้อมูล รหัสบัตรประชาชน 13 หลัก"; message = api.SetMessage("รบกวนให้ลูกค้า กรอกข้อมูล รหัสบัตรประชาชน 13 หลัก"); } else if (decimal.TryParse(request.events[0].message.text, out txtnumber) && request.events[0].message.text.Length == 13) { customer.REST_InitialStep(request.events[0].source.userId, "2", request.events[0].message.text); strMessage = "รบกวนขอ วัน/เดือน/ปี (คศ) เกิด ของลูกค้าครับ"; message = api.SetMessage("รบกวนขอ วัน/เดือน/ปี (คศ) เกิด ของลูกค้าครับ"); } else if (DateTime.TryParseExact(request.events[0].message.text, "dd'/'MM'/'yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) { customer.REST_InitialStep(request.events[0].source.userId, "3", request.events[0].message.text); dt = new DataTable(); dt = customer.REST_SelectFilterCondition(request.events[0].source.userId); if (dt.Rows.Count > 0) { List <CustomerData> data = new List <CustomerData>(); data = customer.REST_GetAccountInformation(dt.Rows[0]["IDCard"].ToString(), dt.Rows[0]["BirthDay"].ToString(), ""); if (data.Count > 0) { foreach (CustomerData cus in data) { strMessage = func.GetMessageCondition(); strMessage = string.Format(strMessage, cus.AgreementNo, cus.Model, cus.NetFinance > 0 ? cus.NetFinance.ToString("#,###.00") : "-", cus.InstallmentAmount > 0 ? cus.InstallmentAmount.ToString("#,###.00") : "-", cus.DueDate, cus.LastDueDate.Date.ToString("dd-MM-yyyy"), cus.OSBalance > 0 ? cus.OSBalance.ToString("#,###.00") : "-", cus.PeriodDue, cus.CollectionAmount > 0 ? cus.CollectionAmount.ToString("#,###.00") : "-", cus.PenaltyAmount > 0 ? cus.PenaltyAmount.ToString("#,###.00") : "-", cus.OtherFee > 0 ? cus.OtherFee.ToString("#,###.00") : "-", cus.PaymentDue > 0 ? cus.PaymentDue.ToString("#,###.00") : "-", cus.PayDueDate.Date.ToString("dd-MM-yyyy") == "01-01-1900" ? "-" : cus.PayDueDate.Date.ToString("dd-MM-yyyy"), cus.ODAmount > 0 ? cus.ODAmount.ToString("#,###.00") : "-", cus.ODPeriodDue, cus.isPastDue, cus.CurrentInstallment > 0 ? cus.CurrentInstallment.ToString("#,###.00") : "-", cus.ContractStatus, cus.DiscountAmount > 0 ? cus.DiscountAmount.ToString("#,###.00") : "-", cus.SuspensionTenor ); message = api.SetMessage(strMessage); dupbubble = new dupBubbleMain(); dupbubble = api.SetBubbleMessage(strMessage); dupbubble.to = request.events[0].source.userId; await api.CallApi(dupbubble); action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, strMessage, "", DateTime.Now, request.destination, "SYSTEM" ); } cardResponse = api.SetCardMessage(strMessage); return(Ok()); } else { action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, strMessage, "", DateTime.Now, request.destination, "SYSTEM" ); strMessage = "สถานะสัญญาไม่สอดคล้องกับการแสดงผล รบกวนขอเบอร์ติดต่อ คุณลูกค้าเพื่อให้เจ้าหน้าที่ติดต่อให้ข้อมูลครับ"; message = api.SetMessage("สถานะสัญญาไม่สอดคล้องกับการแสดงผล รบกวนขอเบอร์ติดต่อ คุณลูกค้าเพื่อให้เจ้าหน้าที่ติดต่อให้ข้อมูลครับ"); } } else { strMessage = "ไม่พบข้อมูลที่ต้องการค้นหา กรุณาตรวจสอบข้อมูล หรือ ลองทำรายการใหม่"; message = api.SetMessage("ไม่พบข้อมูลที่ต้องการค้นหา กรุณาตรวจสอบข้อมูล หรือ ลองทำรายการใหม่"); } } else if (request.events[0].message.text == "เช็คยอดปิดบัญชี") { message = api.SetMessage( @" รบกวน แจ้งข้อมูล ดังนี้ครับ 1. เลขที่สัญญา หรือ เลขหลังบัตร Next Card หรือ ทะเบียนรถ 2. ชื่อนาม-สกุลของผู้เช่าซื้อ 3. วันที่ต้องการชำระยอดปิดทั้งหมด 4. พร้อมเบอร์ติดต่อกลับที่สะดวก เพื่อให้เจ้าหน้าที่คำนวณยอดให้ตามระบบและติดต่อกลับครับ "); strMessage = @" รบกวน แจ้งข้อมูล ดังนี้ครับ 1. เลขที่สัญญา หรือ เลขหลังบัตร Next Card หรือ ทะเบียนรถ 2. ชื่อนาม-สกุลของผู้เช่าซื้อ 3. วันที่ต้องการชำระยอดปิดทั้งหมด 4. พร้อมเบอร์ติดต่อกลับที่สะดวก เพื่อให้เจ้าหน้าที่คำนวณยอดให้ตามระบบและติดต่อกลับครับ "; } else if (request.events[0].message.text == "ช่องทางชำระเงิน") { message = api.SetMessage( @"คุณสามารถชำระค่างวดรถเน็คซ์ได้ ตามช่องทางดังนี้ครับ 1. ผ่านแอปฯธนาคาร(ฟรีค่าธรรมเนียม) : ได้ทุกธนาคาร โดยใช้คิวร์อาร์โค้ดบนใบแจ้งชำระ แสกน หรือหากไม่มี ทักมาได้ครับ 👌 ธ.ไทยพาณิชย์ สามารถใช้บาร์โค้ดบนบัตรเน็คซ์การ์ด ชำระได้ 2. ผ่านจุดรับชำระเงิน(ค่าบริการเริ่ม 10บ.) : เคาน์เตอร์เวอร์วิส, เทสโก้โลตัส, เพย์@โพส โดยใช้ บาร์โค้ดหลังบัตรเน็คซ์การ์ด หรือบนใบแจ้งชำระ เพื่อชำระเงิน" ); strMessage = @"คุณสามารถชำระค่างวดรถเน็คซ์ได้ ตามช่องทางดังนี้ครับ 1. ผ่านแอปฯธนาคาร(ฟรีค่าธรรมเนียม) : ได้ทุกธนาคาร โดยใช้คิวร์อาร์โค้ดบนใบแจ้งชำระ แสกน หรือหากไม่มี ทักมาได้ครับ 👌 ธ.ไทยพาณิชย์ สามารถใช้บาร์โค้ดบนบัตรเน็คซ์การ์ด ชำระได้ 2. ผ่านจุดรับชำระเงิน(ค่าบริการเริ่ม 10บ.) : เคาน์เตอร์เวอร์วิส, เทสโก้โลตัส, เพย์@โพส โดยใช้ บาร์โค้ดหลังบัตรเน็คซ์การ์ด หรือบนใบแจ้งชำระ เพื่อชำระเงิน"; } else if (request.events[0].message.text == "ค้นหาสาขาเน็คซ์") { holyType = "card"; bubble = api.SetCarouselMessage(); strMessage = "Card Carousel"; // message = api.SetMessage("https://www.nextcapital.co.th/locator"); } else if (request.events[0].type == "follow") { message = api.SetMessage( string.Format( @"สวัสดีครับ คุณ {0} ขอบคุณที่เป็นเพื่อนกับ Next Connect โดย เน็คซ์แคปปิตอล ให้เราได้ช่วยเหลือคุณ หรือจะพูดคุยสอบถาม กับเราได้ตลอดเวลาครับผม", profile.Result.displayName)); strMessage = string.Format( @"สวัสดีครับ คุณ {0} ขอบคุณที่เป็นเพื่อนกับ Next Connect โดย เน็คซ์แคปปิตอล ให้เราได้ช่วยเหลือคุณ หรือจะพูดคุยสอบถาม กับเราได้ตลอดเวลาครับผม", profile.Result.displayName); } else if (request.events[0].message.text.Length == 10 && !request.events[0].message.text.Contains("-") && !request.events[0].message.text.Contains("/")) { message = api.SetMessage("ทางเราได้รับเบอร์ติดต่อแล้ว เดี๋ยวจะมีเจ้าหน้าที่ติดต่อกลับครับ"); strMessage = "ทางเราได้รับเบอร์ติดต่อแล้ว เดี๋ยวจะมีเจ้าหน้าที่ติดต่อกลับครับ"; sticker = api.SetStickerMessage("11537", "52002739"); } else { message = api.SetMessage("รบกวนขอเบอร์ติดต่อคุณลูกค้า เพื่อให้เจ้าหน้าที่ติดต่อเพื่อให้ข้อมูลครับ"); //message = api.SetMessage(func.JsonSerialize(request)); strMessage = "รบกวนขอเบอร์ติดต่อคุณลูกค้า เพื่อให้เจ้าหน้าที่ติดต่อเพื่อให้ข้อมูลครับ"; } if (holyType == "text") { response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } else if (holyType == "card") { // cardResponse.to = request.events[0].source.userId; // await api.CallApi(cardResponse); bubble.to = request.events[0].source.userId; await api.CallApi(bubble); } else { master.to = request.events[0].source.userId; await api.CallApi(master); } if (sticker.messages.Count > 0) { sticker.to = request.events[0].source.userId; await api.CallApi(sticker); } action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, strMessage, "", DateTime.Now, request.destination, "SYSTEM" ); return(Ok()); }
public void Add(MessageResponseModel messageResponseModel) { _wcfDemoDbContext.Set <MessageResponseModel>().Add(messageResponseModel); _wcfDemoDbContext.SaveChanges(); }
public void Setup() { this.model = new MessageResponseModel(); }
public async Task <IActionResult> WebHook(LineRequestModel request) { LineResponseModel response = new LineResponseModel(); LineMessageTemplate.FlexMessageMain flex = new LineMessageTemplate.FlexMessageMain(); MessageResponseModel message = new MessageResponseModel(); LineMessageTemplate.RichMenuMain menu = new LineMessageTemplate.RichMenuMain(); Task <UserProfile> profile; Task <LineMessageTemplate.RichMenuResponse> result; DataTable checkHelperCase = new DataTable(); string msg = ""; string typeofMenu = ""; profile = api.GetUserProfile(request.events[0].source.userId); checkHelperCase = DAC.REST_CheckHelperCase(request.events[0].source.userId); // KeepLog action.SP_InsertLogRequestMessage( request.events[0].type, request.destination, request.events[0].mode, request.events[0].type == "message" ? request.events[0].message.text : "", func.JsonSerialize(request), DateTime.Now, request.events[0].source.userId, request.events[0].source.userId ); if (request.events[0].type == "follow") { if (profile.Result != null) { action.SP_InsertUserFollow( request.events[0].source.userId, profile.Result.displayName == null ? "" : profile.Result.displayName, profile.Result.pictureUrl == null ? "" : profile.Result.pictureUrl, profile.Result.statusMessage == null ? "" : profile.Result.statusMessage, profile.Result.language == null ? "" : profile.Result.language ); } msg = string.Format(template.FollowMessage(), profile.Result.displayName); message = api.SetMessage(msg); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } else if (request.events[0].message.text == "เช็คสถานะ") { dt = new DataTable(); dt = DAC.REST_CheckStatustoFlexMessage(request.events[0].source.userId); flex = template.SetupFlexMessage(dt); flex.to = request.events[0].source.userId; await api.CallApi(flex); return(Ok()); } else if (request.events[0].message.text == "ช่วยเหลือ") { message = api.SetMessage("ต้องการให้เราช่วยอะไรครับ"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, request.events[0].message.text, "", DateTime.Now, request.destination, "SYSTEM" ); return(Ok()); } else if (checkHelperCase.Rows.Count > 0) // Helper Case { if (checkHelperCase.Rows[0]["Log_Message"].ToString() == "ช่วยเหลือ") { message = api.SetMessage("ทางเราได้รับทราบปัญหาแล้ว จะเร่งดำเนินการแก้ไขให้ครับ"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); action.SP_InsertLogRequestMessage( "reply", request.events[0].source.userId, request.events[0].mode, request.events[0].message.text, "", DateTime.Now, request.destination, "SYSTEM" ); dt = new DataTable(); dt = DAC.REST_GetNeedHelpMessage(request.events[0].source.userId); string alertLine = template.MessageNeedHelp(); if (dt.Rows.Count > 0) { alertLine = string.Format(alertLine, dt.Rows[0]["User_Role"].ToString(), dt.Rows[0]["BranchCode"].ToString(), dt.Rows[0]["User_Name"].ToString(), dt.Rows[0]["RequestDate"].ToString(), dt.Rows[0]["message"].ToString()); await api.MessageToGroupSupport(alertLine); } return(Ok()); } } else { if (request.events[0].message.text == "เริ่มต้นใช้งาน") { message = api.SetMessage("กรุณากรอก Secret Code ที่ได้รับ เพื่อเริ่มต้นใช้งาน"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); return(Ok()); } // Check is AppNo dt = new DataTable(); dt = DAC.CheckApplicationNo(request.events[0].message.text); if (dt.Rows.Count > 0) { dtifExists = new DataTable(); dtifExists = DAC.REST_CheckAceptTaskExisting(request.events[0].message.text); if (dtifExists.Rows.Count > 0) { if (!string.IsNullOrEmpty(dtifExists.Rows[0]["Application_Responsibility"].ToString())) { message = api.SetMessage("ไม่สามารถทำรายการได้เนื่องจากมีคนกดรับงานไปแล้ว"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); return(Ok()); } } checker.AcceptTask(request.events[0].source.userId, dt.Rows[0]["Application_No"].ToString()); message = api.SetMessage("บันทึกข้อมูลสำเร็จ"); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); return(Ok()); } dt = new DataTable(); dt = DAC.CheckSecretCode(request.events[0].message.text); if (dt.Rows.Count == 0) { msg = string.Format(template.UnAuthorizeMessage(), profile.Result.displayName); message = api.SetMessage(msg); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } else { dt = new DataTable(); dt = DAC.MatchingUser(request.events[0].source.userId, request.events[0].message.text); if (dt.Rows.Count > 0) { if (dt.Rows[0]["User_Role"].ToString() == "Checker" || dt.Rows[0]["User_Role"].ToString() == "BranchHead") { typeofMenu = "checker"; menu = template.SetupRichMenuChecker(request.events[0].source.userId); } else { typeofMenu = "dealer"; menu = template.SetupRichMenuDealer(request.events[0].source.userId); } if (string.IsNullOrEmpty(dt.Rows[0]["User_RichMenuID"].ToString())) { result = api.SetupMenu(menu, typeofMenu); await api.SetupBackgroundMenu(result.Result.richMenuId, typeofMenu + ".png"); if (result != null) { try { await api.SetDefaultMenu(result.Result.richMenuId, request.events[0].source.userId); } catch (Exception e) { await api.DeleteMenu(result.Result.richMenuId); return(BadRequest(e.Message)); } finally { DAC.SetupRichmenubyUser(request.events[0].source.userId, result.Result.richMenuId); } } } dt = new DataTable(); dt = DAC.GetUserInformation(request.events[0].source.userId); if (dt.Rows.Count > 0) { msg = string.Format( template.PassAuthorizeMessage() , dt.Rows[0]["User_Name"].ToString() , dt.Rows[0]["User_Code"].ToString() , dt.Rows[0]["User_Area"].ToString() ); message = api.SetMessage(msg); response.replyToken = request.events[0].replyToken; response.messages.Add(message); await api.CallApi(response); } } else { } } } return(Ok()); }
private MessageResponseModel Messager(MessageRequestModel model) { if (!ModelState.IsValid) { return(new MessageResponseModel() { Error = Data.Enums.MessageStatus.InvalidFields, Message = "Required parameter(s) are missing" }); } if (!model.Service.Equals(ServiceCode.Sms) && !model.Service.Equals(ServiceCode.Email)) { return(new MessageResponseModel() { Error = Data.Enums.MessageStatus.InvalidService, Message = "Invalid service request" }); } var gateway = _gatewayService.List() .FirstOrDefault(x => x.ServiceCode == model.Service && x.IsActive == true); if (gateway == null) { return(new MessageResponseModel() { Error = Data.Enums.MessageStatus.InactiveGateway, Message = "No active gateway available" }); } var client = _clientService.List().ToList().FirstOrDefault(x => x.ClientId.Equals(model.ClientId) && x.AccessKey.Equals(model.AccesssKey) && x.IsActive == true); if (client == null) { return(new MessageResponseModel() { Error = Data.Enums.MessageStatus.InvalidApplication, Message = "No client record is found" }); } var existingApplication = _applicationService.List() .FirstOrDefault(x => x.ClientId == model.ClientId && x.Name.ToLower().Equals(model.AppName.ToLower()) && x.IsActive == true); string applicationId; string applicationName; if (existingApplication == null) { var applicationModel = new ApplicationModel() { ClientId = model.ClientId, Name = model.AppName, DateCreated = DateTime.UtcNow }; var newApplication = _applicationService.Create(applicationModel).Result; applicationId = newApplication.ApplicationId; applicationName = newApplication.Name; } else { applicationId = existingApplication.ApplicationId; applicationName = existingApplication.Name; } var price = (model.Service == ServiceCode.Sms) ? _priceSettings.Value.SmsPrice : _priceSettings.Value.EmailPrice; var destinations = model.To.Split(','); var cost = destinations.Length * price; if (client.Balance < cost) { return(new MessageResponseModel() { Error = Data.Enums.MessageStatus.InsufficientCredit, Message = "Insufficient credit" }); } gateway.Password = _generator.Decrypt(gateway.Password).Result; try { //var gatewayResponse = "local testing"; var gatewayResponse = _messageAdapter.Send(model, gateway); client.Balance = client.Balance - cost; _clientService.Update(client); var request = new RequestModel() { ApplicationId = applicationId, GatewayId = gateway.GatewayId, Recipients = destinations.Length, Cost = cost, Response = gatewayResponse, DateCreated = DateTime.UtcNow }; var lastRequest = _requestService.Create(request).Result; return(new MessageResponseModel() { Error = Data.Enums.MessageStatus.MessageSubmitted, Message = "Message(s) submited successfully", Reference = lastRequest.RequestId }); } catch (Exception e) { Console.WriteLine(e); //throw; } var response = new MessageResponseModel() { Error = Data.Enums.MessageStatus.InternalServerError, Message = "Internal server error" }; return(response); }
public async Task <IActionResult> TestConnection(LineRequestModel request) { LineResponseModel response = new LineResponseModel(); LineMessageTemplate.FlexMessageMain flex = new LineMessageTemplate.FlexMessageMain(); MessageResponseModel message = new MessageResponseModel(); LineMessageTemplate.RichMenuMain menu = new LineMessageTemplate.RichMenuMain(); Task <UserProfile> profile; Task <LineMessageTemplate.RichMenuResponse> result; DataTable checkHelperCase = new DataTable(); string msg = ""; string typeofMenu = ""; try { message = api.SetMessage("กรุณากรอก Secret Code ที่ได้รับ เพื่อเริ่มต้นใช้งาน"); for (int i = 0; i < request.events.Count; i++) { response.replyToken = request.events[i].replyToken; response.messages.Add(message); // await api.CallApi(response); try { using (HttpClient client = new HttpClient()) { action.SP_InsertLogRequestMessage( "Call API", "", "request.events[0].mode", "", "Before Call API", DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); StringContent content = new StringContent(func.JsonSerialize(response), System.Text.Encoding.UTF8, "application/json"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "q281ubFyT1L3Z1gAyrcLdLY4mHv2hXJFqAb/MEUO2OncgbgXdSsR6BDCXsrTZh0I3haZwDDaz1lrKF694gC0fTnp/CnbLma8WkiHW3UXwSf6gHxU5lNJP/IYeb1+KQRFeun9E5jJT8qx9lpQpY1S9AdB04t89/1O/w1cDnyilFU="); var sresult = await client.PostAsync("https://api.line.me/v2/bot/message/reply", content); var contents = await sresult.Content.ReadAsStringAsync(); action.SP_InsertLogRequestMessage( "Call API", "", "request.events[0].mode", "", contents[0].ToString(), DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); } } catch (Exception e) { action.SP_InsertLogRequestMessage( "request.events[0].type", "", "Error", "", e.Message, DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); return(Ok()); } } return(Ok()); } catch (Exception e) { action.SP_InsertLogRequestMessage( "request.events[0].type", "", "request.events[0].mode", "", e.Message, DateTime.Now, "request.events[0].source.userId", "request.events[0].source.userId" ); return(Ok()); } }