CampaignScheduler.cshtml 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. @{
  2. ViewBag.Title = "Service Management";
  3. Layout = "~/Views/Shared/_Layout.cshtml";
  4. }
  5. @using SuperAdmin.Models;
  6. @using SuperAdmin.Models.Http;
  7. @using SuperAdmin.Controllers;
  8. @using SuperAdmin.Source;
  9. @{
  10. }
  11. <style>
  12. img {
  13. max-width: 100%;
  14. }
  15. </style>
  16. <div class="content-header row">
  17. <div class="content-header-left col-md-6 col-xs-12 mb-1">
  18. <h2 class="content-header-title">Calendar Management</h2>
  19. </div>
  20. <div class="content-header-right breadcrumbs-right breadcrumbs-top col-md-6 col-xs-12">
  21. <div class="breadcrumb-wrapper col-xs-12">
  22. <ol class="breadcrumb">
  23. <li class="breadcrumb-item">
  24. <a href="Index">Admin</a>
  25. </li>
  26. <li class="breadcrumb-item">
  27. <a href="#">Campaign Scheduler</a>
  28. </li>
  29. </ol>
  30. </div>
  31. </div>
  32. </div>
  33. <div class="content-body">
  34. <!-- Basic form layout section start -->
  35. <section id="basic-form-layouts">
  36. <div class="row service-height">
  37. <div class="col-md-12">
  38. <div class="card">
  39. <div class="card-header">
  40. <h4 class="card-title" id="basic-layout-form">Search</h4>
  41. </div>
  42. <div class="card-content collapse show">
  43. <div class="card-body">
  44. <div class="card-block">
  45. <div class="form-body">
  46. @Html.AntiForgeryToken()
  47. <div class="row">
  48. <div class="col-md-4 col-sm-4 col-6">
  49. <div class="form-group">
  50. <label>From Date</label>
  51. <div class='input-group'>
  52. <input type="text" class="form-control fromDateSearch" id="fromDateSearch" name="fromDateSearch">
  53. </div>
  54. </div>
  55. </div>
  56. <div class="col-md-4 col-sm-4 col-6">
  57. <div class="form-group">
  58. <label>To date</label>
  59. <div class='input-group'>
  60. <input type="text" class="form-control toDateSearch" id="toDateSearch" name="toDateSearch">
  61. </div>
  62. </div>
  63. </div>
  64. <div class="col-md-4 col-sm-4 col-6">
  65. <div class="form-group">
  66. <label>Status</label>
  67. <select class="form-control" id="statusSearch" name="statusSearch">
  68. <option value="-1" selected>-- All --</option>
  69. <option value="@CommonUtils.CampaignStatus.Pending">Pending</option>
  70. <option value="@CommonUtils.CampaignStatus.Running">Running</option>
  71. <option value="@CommonUtils.CampaignStatus.Paused">Paused</option>
  72. <option value="@CommonUtils.CampaignStatus.Completed">Completed</option>
  73. <option value="@CommonUtils.CampaignStatus.Closed">Closed</option>
  74. </select>
  75. </div>
  76. </div>
  77. </div>
  78. <div class="row">
  79. <div class="col-md-12">
  80. <button type="button" class="btn btn-info" onclick="search()" id="btnSearch">
  81. <i class="fa fa-search"></i> Search
  82. </button>
  83. <button type="button" class="btn btn-warning" onclick="exportExcel()" id="btnExportExcel">
  84. <i class="fa fa-export"></i> Export Excel
  85. </button>
  86. <button type="button" class="btn btn-secondary" onclick="toggleView()" id="btnToggleView">
  87. <i class="fa fa-calendar-alt"></i> <span id="viewModeText">Calendar View</span>
  88. </button>
  89. </div>
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. <div class="col-12">
  98. <div class="card">
  99. <div class="card-content " id="partial-content">
  100. @*<div class="col-md-12 table-responsive" style="padding-top: 10px">
  101. @Html.Partial("_Campaigns")
  102. </div>*@
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. </section>
  108. <!-- // Basic form layout section end -->
  109. </div>
  110. @section Scripts {
  111. <script>
  112. var currentViewType = 'calendar'; // Default to calendar view
  113. $(document).ready(function () {
  114. $(".fromDateSearch").datetimepicker({
  115. format: "DD/MM/YYYY",
  116. defaultDate: moment().startOf('month')
  117. });
  118. $(".toDateSearch").datetimepicker({
  119. format: "DD/MM/YYYY",
  120. defaultDate: moment().endOf('day')
  121. });
  122. search();
  123. });
  124. function toggleView() {
  125. currentViewType = currentViewType === 'calendar' ? 'table' : 'calendar';
  126. var iconClass = currentViewType === 'calendar' ? 'fa-calendar-alt' : 'fa-table';
  127. $('#btnToggleView').find('i').removeClass().addClass('fa ' + iconClass);
  128. $('#viewModeText').text(currentViewType === 'calendar' ? 'Calendar View' : 'Table View');
  129. search();
  130. }
  131. function search() {
  132. startSpinner('btnSearch');
  133. $.ajax({
  134. url: urlConfig("/Admin/SchedulerSearch"),
  135. data: {
  136. fromDate: $("#fromDateSearch").val(),
  137. toDate: $("#toDateSearch").val(),
  138. status: $("#statusSearch").val(),
  139. viewType: currentViewType
  140. },
  141. type: "POST",
  142. success: function (data) {
  143. stopSpinner('btnSearch');
  144. $("#partial-content").html(data);
  145. },
  146. error: function (data) {
  147. stopSpinner('btnSearch');
  148. console.log(data.error);
  149. }
  150. })
  151. }
  152. function exportExcel() {
  153. console.log("Export data");
  154. startSpinner('btnExportExcel');
  155. $.ajax({
  156. url: urlConfig("/Admin/SchedulerExport"),
  157. data: {
  158. fromDate: $("#fromDateSearch").val(),
  159. toDate: $("#toDateSearch").val(),
  160. status: $("#statusSearch").val()
  161. },
  162. type: "POST",
  163. xhr: function () {
  164. var xhr = new XMLHttpRequest();
  165. xhr.onreadystatechange = function () {
  166. if (xhr.readyState == 2) {
  167. if (xhr.status == 200) {
  168. xhr.responseType = "blob";
  169. console.log("blob");
  170. } else {
  171. xhr.responseType = "text";
  172. console.log("text");
  173. }
  174. }
  175. };
  176. return xhr;
  177. },
  178. success: function (data, status, xhr) {
  179. stopSpinner('btnExportExcel');
  180. let filename = "";
  181. let disposition = xhr.getResponseHeader('Content-Disposition');
  182. if (disposition && disposition.indexOf('attachment') !== -1) {
  183. let filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
  184. let matches = filenameRegex.exec(disposition);
  185. if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
  186. }
  187. let a = document.createElement('a');
  188. let url = window.URL.createObjectURL(data);
  189. a.href = url;
  190. a.download = filename.replace('UTF-8', '');;
  191. document.body.append(a);
  192. a.click();
  193. a.remove();
  194. window.URL.revokeObjectURL(url);
  195. $("#overlay").fadeOut(300);
  196. },
  197. error: function (data) {
  198. stopSpinner('btnExportExcel');
  199. console.log(data.error);
  200. }
  201. })
  202. }
  203. </script>
  204. }