static void Main(string[] args) { using (var dataContext = new DataContext()) { var t = dataContext.EvidenceLogs .Include(f => f.InfringementEvidences) .ToList(); //dataContext.Database.Log = (s) => System.Diagnostics.Debug.WriteLine(s); Company company = dataContext.Companies.Find(1); User user = dataContext.Users.Find(2); //var targetMobileNumber = "095 080 5791"; //var targetMobileNumber = "096 213 8481"; var targetMobileNumber = "0845766144"; var isValid = Msisdn.IsValid(targetMobileNumber, Country); var msisdn = new Msisdn(targetMobileNumber, Country); Router router = new Router() { Source = "IMS", Target = msisdn.ToString(Msisdn.Format.International) }; SmsPayload payload = new SmsPayload("FirtNotice", "CM", "Traffic Offence. Download at http://www.ims.africa/Notification/Verify?refNo=123456789"); Item.Initiate(dataContext, "internal reference", company, user, router, payload, false); } System.Console.ReadKey(); }
public IHttpActionResult SendNoticeSms(IList <string> referenceNumbers) { using (var dataContext = new DataContext()) { var response = new List <SendResponseModel>(); var company = dataContext.Companies.FirstOrDefault(f => f.Name == "Intelligent Mobility Solutions"); var corresponedenceTemplate = dataContext.CorrespondenceTemplates .AsNoTracking() .FirstOrDefault(f => f.Key == "FirstNotice" && f.CorrespondenceType == Core.Data.Enums.CorrespondenceType.Sms); foreach (var referenceNumber in referenceNumbers) { var register = dataContext.Registers .Include(f => f.Person) .FirstOrDefault(f => f.ReferenceNumber == referenceNumber); var person = register.Person; if (person == null) { response.Add(new SendResponseModel { ReferenceNumber = referenceNumber, IsError = true, Error = "No person associated with the offence." }); continue; } var isValid = Msisdn.IsValid(person.MobileNumber, Country); if (!isValid) { // TODO: feedback that Msisdn is invalid and cannot be trusted response.Add(new SendResponseModel { ReferenceNumber = referenceNumber, IsError = true, Error = "Invalid Msisdn." }); continue; } var message = corresponedenceTemplate.Generate(new Dictionary <string, string> { { "referenceNumber", referenceNumber } }); Router router = new Router() { Source = "IMS", Target = new Msisdn(person.MobileNumber, Country).ToString(Msisdn.Format.International) }; SmsPayload payload = new SmsPayload("FirstNoticeSms", "CM", message); Item.Initiate(dataContext, referenceNumber, company, person, router, payload, false); dataContext.SaveChanges(); response.Add(new SendResponseModel { ReferenceNumber = referenceNumber, IsError = false }); } return(Ok(response)); } }
private static Router GetSmsRoute(ICorrespondent source, ICorrespondent target) { var sourceMobileNumber = source.MobileNumber; if (string.IsNullOrWhiteSpace(sourceMobileNumber)) { // For sms the source is not that important sourceMobileNumber = "0"; } var targetMobileNumber = target.MobileNumber; if (!Msisdn.IsValid(targetMobileNumber, Country)) { return(null); } var msisdn = new Msisdn(targetMobileNumber, Country); return(new Router { Source = sourceMobileNumber, Target = msisdn.ToString(Msisdn.Format.International) }); }
public IHttpActionResult Post([FromBody] UserModel model) { if (!Msisdn.IsValid(model.MobileNumber, Country)) { return(this.BadRequestEx(Error.MobileNumberInvalid)); } using (var dbContext = new DataContext()) { var user = new User(); user.FirstName = model.FirstName; user.LastName = model.LastName; user.Email = model.Email; user.MobileNumber = model.MobileNumber; user.Status = Data.Enums.Status.Active; user.CreatedTimestamp = DateTime.Now; user.IsOfficer = model.IsOfficer ? "1" : "0"; user.ExternalID = model.ExternalID; dbContext.Users.Add(user); if (model.Districts != null) { foreach (var districtModel in model.Districts) { var district = dbContext.Districts.Find(districtModel.ID); if (district == null) { continue; } var userDistrict = new UserDistrict(); userDistrict.District = district; userDistrict.User = user; dbContext.UserDistricts.Add(userDistrict); } } var userName = Kapsch.Core.Cryptography.Random.GenerateConcatenatedString(model.FirstName.Substring(0, 1), model.LastName); while (true) { if (!dbContext.Credentials.Any(f => f.UserName == userName)) { break; } userName = Kapsch.Core.Cryptography.Random.GenerateConcatenatedString(model.FirstName.Substring(0, 1), model.LastName); } Random random = new Random(); var credential = new Credential(); credential.CreatedTimeStamp = DateTime.Now; credential.EntityID = user.ID; credential.EntityType = Data.Enums.EntityType.User; credential.ExpiryTimeStamp = DateTime.Now.AddYears(20); credential.Status = Data.Enums.Status.Active; credential.UserName = userName; credential.Password = Membership.GeneratePassword(8, 0); credential.Password = Regex.Replace(credential.Password, @"[^a-zA-Z0-9]", m => random.Next(0, 9).ToString()); dbContext.Credentials.Add(credential); if (model.SystemFunctions != null) { foreach (var systemFunctionModel in model.SystemFunctions) { var systemFunction = dbContext.SystemFunctions.Find(systemFunctionModel.ID); if (systemFunction == null) { continue; } var userSystemFunction = new CredentialSystemFunction(); userSystemFunction.SystemFunction = systemFunction; userSystemFunction.Credential = credential; userSystemFunction.Status = Data.Enums.Status.Active; dbContext.CredentialSystemFunctions.Add(userSystemFunction); } } dbContext.SaveChanges(); var logo = string.Format("{0}/Images/IMS-logo-180x66-1color.png", UserManagementPortal); var personalizations = new Dictionary <string, string>(); personalizations.Add("website", UserManagementPortal); personalizations.Add("logo", logo); personalizations.Add("fullName", string.Format("{0} {1}", user.FirstName, user.LastName)); personalizations.Add("userName", credential.UserName); personalizations.Add("password", credential.Password); //EmailHelper.Send( // HttpContext.Current.Server.MapPath("~/MailTemplates"), // new[] { model.Email }, // "Account Created", // "AccountCreated.txt", // personalizations); var company = dbContext.Companies.FirstOrDefault(f => f.Name == "Intelligent Mobility Solutions"); // IMS if (company == null) { Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("Unable to get company, Intelligent Mobility Solutions, from database.")); } else { SmsHelper.Send( dbContext, "User Management", "Create User", new Router() { Source = "IMS", Target = new Msisdn(user.MobileNumber, Country).ToString(Msisdn.Format.International) }, company, user, HttpContext.Current.Server.MapPath("~/MailTemplates"), "SmsAccountCreated.txt", personalizations); } model.ID = user.ID; model.UserName = credential.UserName; model.Status = (Models.Enums.UserStatus)user.Status; model.CreatedTimestamp = user.CreatedTimestamp; return(Ok(model)); } }
public IHttpActionResult Put([FromBody] UserModel model) { if (!Msisdn.IsValid(model.MobileNumber, Country)) { return(this.BadRequestEx(Error.MobileNumberInvalid)); } using (var dbContext = new DataContext()) { var credential = dbContext.Credentials .Include(f => f.User) .Include(f => f.CredentialSystemFunctions) .SingleOrDefault(f => f.EntityID == model.ID && f.EntityType == Data.Enums.EntityType.User); if (credential == null) { return(this.BadRequestEx(Error.UserDoesNotExist)); } User user = credential.User; user.FirstName = model.FirstName; user.LastName = model.LastName; user.Email = model.Email; user.MobileNumber = model.MobileNumber; user.Status = (Data.Enums.Status)model.Status; user.IsOfficer = model.IsOfficer ? "1" : "0"; user.ExternalID = model.ExternalID; credential.CredentialSystemFunctions.ToList().ForEach(f => dbContext.CredentialSystemFunctions.Remove(f)); foreach (var systemFunctionModel in model.SystemFunctions) { var systemFunction = dbContext.SystemFunctions.Find(systemFunctionModel.ID); if (systemFunction == null) { continue; } var userSystemFunction = new CredentialSystemFunction(); userSystemFunction.SystemFunction = systemFunction; userSystemFunction.Credential = credential; userSystemFunction.Status = Data.Enums.Status.Active; dbContext.CredentialSystemFunctions.Add(userSystemFunction); } user.UserDistricts.ToList().ForEach(f => dbContext.UserDistricts.Remove(f)); foreach (var districtModel in model.Districts) { var district = dbContext.Districts.Find(districtModel.ID); if (district == null) { continue; } var userDistrict = new UserDistrict(); userDistrict.District = district; userDistrict.User = user; dbContext.UserDistricts.Add(userDistrict); } dbContext.SaveChanges(); return(Ok()); } }