diff --git a/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/CompanyMasterAppService.cs b/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/CompanyMasterAppService.cs index de3ebca..1c765cf 100644 --- a/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/CompanyMasterAppService.cs +++ b/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/CompanyMasterAppService.cs @@ -36,7 +36,7 @@ using System.Net.Http; using System.Net.Http.Headers; using Newtonsoft.Json; using Abp.Json; - +using System.Diagnostics; namespace BCS.BMC.CompanyMasters { @@ -125,11 +125,11 @@ namespace BCS.BMC.CompanyMasters protected async Task Create(CreateOrUpdateCompanyMasterInput input) { int companyId = 0; - + // await GetUrlIsValid(input.Url); var company = from m in _companyMaster.GetAllList().Where(m => m.Url.ToLower().Trim() == input.Url.ToLower().Trim()) - - select m; - + + select m; + var entity = input.MapTo(); // entity.TenantId = AbpSession.TenantId; @@ -147,17 +147,57 @@ namespace BCS.BMC.CompanyMasters } } entity.DomainName = host; - if (company == null || company.Count() == 0) + if (company == null || company.Count() == 0) { companyId = await _companyMaster.InsertAndGetIdAsync(entity); } else - { + { throw new UserFriendlyException("The Input Url Already Exist"); } return companyId; } + public async Task GetUrlIsValid(string url) + { + try + { + HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest; + request.Timeout = 5000; //set the timeout to 5 seconds to keep the user from waiting too long for the page to load + request.Method = "HEAD"; //Get only the header information -- no need to download any content + + using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) + { + int statusCode = (int)response.StatusCode; + if (statusCode >= 100 && statusCode < 400) //Good requests + { + return true; + } + else if (statusCode >= 500 && statusCode <= 510) //Server Errors + { + //log.Warn(String.Format("The remote server has thrown an internal error. Url is not valid: {0}", url)); + Debug.WriteLine(String.Format("The remote server has thrown an internal error. Url is not valid: {0}", url)); + return false; + } + } + } + catch (WebException ex) + { + if (ex.Status == WebExceptionStatus.ProtocolError) //400 errors + { + return false; + } + else + { + // log.Warn(String.Format("Unhandled status [{0}] returned for url: {1}", ex.Status, url), ex); + } + } + catch (Exception ex) + { + // log.Error(String.Format("Could not test url {0}.", url), ex); + } + return false; + } protected async Task Update(CreateOrUpdateCompanyMasterInput input) { var entity = await _companyMaster.FirstOrDefaultAsync(x => x.Id == input.Id); @@ -166,7 +206,7 @@ namespace BCS.BMC.CompanyMasters //throw new UserFriendlyException(NotFoundRecord ("Name", input.ClientName)); throw new UserFriendlyException("No Record Found"); } - + var getclient = from m in _companyMaster.GetAllList() .Where(m => m.Id == input.Id && m.CompanyName.ToLower().Trim() == input.CompanyName.ToLower().Trim() && m.Id != input.Id) @@ -217,11 +257,11 @@ namespace BCS.BMC.CompanyMasters } var company = await _companyMaster.FirstOrDefaultAsync(x => x.Url == input.CompanyUrl.ToString()); - if(company == null) + if (company == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } - + using (HttpClient client = new HttpClient()) { Uri uri = new Uri(input.CompanyUrl); @@ -245,7 +285,7 @@ namespace BCS.BMC.CompanyMasters return new HttpStatusCodeResult(HttpStatusCode.OK, responseStream); } } - return new HttpStatusCodeResult(HttpStatusCode.OK); + return new HttpStatusCodeResult(HttpStatusCode.OK); } } } diff --git a/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/ICompanyMasterAppService.cs b/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/ICompanyMasterAppService.cs index 53c7115..6989a93 100644 --- a/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/ICompanyMasterAppService.cs +++ b/BCS.BMC/src/BCS.BMC.Application/CompanyMasters/ICompanyMasterAppService.cs @@ -28,5 +28,6 @@ namespace BCS.BMC.CompanyMasters Task DeleteCompany(EntityDto input); [HttpPost] Task TokenByCompanyUrl(GetInputUrl input); + Task GetUrlIsValid(string url); } } diff --git a/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/FireStoreNotificationModel.cs b/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/FireStoreNotificationModel.cs index 1f9a711..d5e3ecf 100644 --- a/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/FireStoreNotificationModel.cs +++ b/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/FireStoreNotificationModel.cs @@ -27,5 +27,7 @@ namespace BCS.BMC.FirebaseCloudMessaging.Dto public bool Status { get; set; } [FirestoreProperty] public List UserId { get; set; } + [FirestoreProperty] + public int CompanyId { get; set; } } } diff --git a/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/NotificationModel.cs b/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/NotificationModel.cs index 8c3d2c5..63564bf 100644 --- a/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/NotificationModel.cs +++ b/BCS.BMC/src/BCS.BMC.Application/FirebaseCloudMessaging/Dto/NotificationModel.cs @@ -13,13 +13,8 @@ namespace BCS.BMC.FirebaseCloudMessaging.Dto [AutoMapTo(typeof (FirebaseCloudMessageDetails))] public class NotificationModel { - - - //[JsonProperty("title")] - //public List Title { get; set; } - //[JsonProperty("body")] public string FcmToken { get; set; } - //public List Id { get; set; } + public string Message { get; set; } public DateTime? MessageSentDateTime { get; set; } @@ -28,6 +23,7 @@ namespace BCS.BMC.FirebaseCloudMessaging.Dto public bool Status { get; set; } public List UserId { get; set; } + public string CompanyUrl { get; set; } } diff --git a/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs b/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs index ceeab27..bc6fd72 100644 --- a/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs +++ b/BCS.BMC/src/BCS.BMC.Web.Core/Controllers/TokenAuthController.cs @@ -267,7 +267,12 @@ namespace BCS.BMC.Controllers { return BadRequest("Url Not Found"); } - return Ok("Success"); + var result = new + { + CompanyId = company.Id, + + }; + return Ok(result); } [HttpPost] diff --git a/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/CompanyMasterController.cs b/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/CompanyMasterController.cs index 9db35dd..14298bc 100644 --- a/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/CompanyMasterController.cs +++ b/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/CompanyMasterController.cs @@ -37,5 +37,10 @@ namespace BCS.BMC.Web.Controllers return PartialView("_EditModal", output); } + //public async Task GetUrlIsValid(string url) + //{ + // bool isSuccess = await _companyasterService.GetUrlIsValid(url); + // return isSuccess; + //} } } diff --git a/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/NotificationController.cs b/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/NotificationController.cs index 4650eff..695482c 100644 --- a/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/NotificationController.cs +++ b/BCS.BMC/src/BCS.BMC.Web.Mvc/Controllers/NotificationController.cs @@ -29,6 +29,7 @@ namespace BCS.BMC.Web.Controllers private readonly IFirebaseNotificationAppService _notificationService; private readonly IRepository _firebaseCloudMessageDetails; private readonly IRepository _firebaseToken; + private readonly IRepository _companyMasterService; //IFirebaseConfig config = new FirebaseConfig //{ // AuthSecret = "n6DTPQEbpnLahrrk2EYu4bJ2Wd3jCk2N8kocazdI", @@ -37,11 +38,13 @@ namespace BCS.BMC.Web.Controllers //IFirebaseClient client; public NotificationController(IFirebaseNotificationAppService notificationService, IRepository firebaseCloudMessageDetails, - IRepository firebaseToken) + IRepository firebaseToken, + IRepository companyMasterService) { _notificationService = notificationService; _firebaseCloudMessageDetails = firebaseCloudMessageDetails; _firebaseToken = firebaseToken; + _companyMasterService = companyMasterService; } @@ -62,7 +65,7 @@ namespace BCS.BMC.Web.Controllers { string path = AppDomain.CurrentDomain.BaseDirectory + @"firechat-57601-firebase-adminsdk-anscp-e04366c4d4.json"; Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", path); - + var companyDetails = _companyMasterService.GetAllList().Where(x => x.Url.Trim() == notification.CompanyUrl.Trim()).FirstOrDefault(); try { FirestoreDb db = FirestoreDb.Create("firechat-57601"); @@ -77,6 +80,7 @@ namespace BCS.BMC.Web.Controllers data.SenderName = notification.SenderName; data.Status = notification.Status; data.UserId = notification.UserId; + data.CompanyId = companyDetails.Id; await db.Collection("BMC_Notification").Document().SetAsync(data); int userId = 0; diff --git a/BCS.BMC/src/BCS.BMC.Web.Mvc/Views/CompanyMaster/_CreateModal.cshtml b/BCS.BMC/src/BCS.BMC.Web.Mvc/Views/CompanyMaster/_CreateModal.cshtml index 804cc8a..29cb284 100644 --- a/BCS.BMC/src/BCS.BMC.Web.Mvc/Views/CompanyMaster/_CreateModal.cshtml +++ b/BCS.BMC/src/BCS.BMC.Web.Mvc/Views/CompanyMaster/_CreateModal.cshtml @@ -24,20 +24,22 @@ *@
-
+
+
+ +
+ +
+ @* *@ +
+
-
- -
- -
-
- @*
+ @*
diff --git a/BCS.BMC/src/BCS.BMC.Web.Mvc/wwwroot/view-resources/Views/CompanyMaster/Index.js b/BCS.BMC/src/BCS.BMC.Web.Mvc/wwwroot/view-resources/Views/CompanyMaster/Index.js index 86695e1..1a90e39 100644 --- a/BCS.BMC/src/BCS.BMC.Web.Mvc/wwwroot/view-resources/Views/CompanyMaster/Index.js +++ b/BCS.BMC/src/BCS.BMC.Web.Mvc/wwwroot/view-resources/Views/CompanyMaster/Index.js @@ -84,9 +84,57 @@ $('input[type="checkbox"]', rows).prop('checked', this.checked); }); + //function validateUrl (isValid) { + // var companydetails = _$form.serializeFormToObject(); + // abp.ui.setBusy(); + // var companyUrl = companydetails.Url; + // abp.notify.info(l('ValidatingUrl')); + // _companyService.urlIsValid(companyUrl); + + //} + //_$form.find('.download-button').on('click', (e) => { + // debugger; + // var companydetails = _$form.serializeFormToObject(); + // //abp.ui.setBusy(); + // var companyUrl = companydetails.Url; + // $.ajax({ + // url: abp.appPath + 'CompanyMaster/GetUrlIsValid?url=' + companyUrl, + // type: 'GET', + // data: { url: companyUrl }, + // success: function (data) { + // alert('ok'); + // console.log(data); + + // if (data.result == true) { + // debugger; + // alert('correct'); + // // window.location.replace("Management Page.aspx"); + // } + // }, + // Error: function () { + // alert('error'); + // } + + // }); + + + + + // //var companydetails = _$form.serializeFormToObject(); + // //abp.ui.setBusy(); + // //var companyUrl = companydetails.Url; + // //var data = _companyService.getUrlIsValid(companyUrl); + // //data.done(function (result) { + // // var isSuccess = result; + // //}) + // //console.log("Hello world!"); + // //console.log('1', data); + // //}); + //}); + _$form.find('.save-button').on('click', (e) => { e.preventDefault(); - + if (!_$form.valid()) { return; }