public async Task <IHttpActionResult> PostIdentity([FromBody] string contacts) { DataClassesManager.ControllerLog("info", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}#{1}:{2}", "", _User.Username, string.IsNullOrEmpty(contacts) ? "NULL" : (contacts.Length > 20 ? contacts.Substring(0, 20) + "..." : contacts))); DateTimeOffset?ack; string countryCode; DataClassesManager.GetUserSyncInfo(_User.UserId.Value, out countryCode, out ack); string error = string.Empty; var script = Helper.SynchronizeUtils.GenerateSynchronizeIdentityTSQL(_User.UserId.Value, countryCode, contacts, out error); if (!string.IsNullOrEmpty(error)) { DataClassesManager.ControllerLog("error", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}#{1}:{2}", "", _User.Username, error)); return(BadRequest(error)); } DataClassesManager.ExecuteSynchronizeScript(_User.UserId.Value, script, "Identity", ack, out error); if (string.IsNullOrEmpty(error)) { DataClassesManager.ControllerLog("info", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}#{1}:{2}:{3}", "", _User.Username, ack, "Done")); } else { DataClassesManager.ControllerLog("error", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}#{1}:{2}", "", _User.Username, error)); } DataClassesManager.ControllerLog("info", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}#{1}:{2}", "", _User.Username, ack)); return(Ok(new { ack = ack })); }
public async Task <IHttpActionResult> Get() { var deviceSerial = _SessionInfo.DeviceSerial; if (string.IsNullOrEmpty(deviceSerial)) { DataClassesManager.ControllerLog("error", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}:{1}", _User.Username, "SerialHeaderRequired")); return(BadRequest("SerialHeaderRequired")); } //var activeSession = context.UserSession.Where(x => x.UserId == user.UserId).OrderByDescending(x => x.LoggedAt).Take(1).SingleOrDefault(); //if (activeSession.DeviceSerial != deviceSerial) //{ // var ac = activeSession.DeviceSerial; // DataClassesManager.ControllerLog("error", id, this.Request.RequestUri.PathAndQuery, string.Format("{0}:{1}-current:{2}-active:{3}", user.Username, "Conflict", activeSession.DeviceSerial, deviceSerial)); // return Conflict(); //} var errorMessage = ""; var result = DataClassesManager.GetPendingChat(_User.UserId.Value, out errorMessage); if (!string.IsNullOrEmpty(errorMessage)) { DataClassesManager.ControllerLog("error", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}:{1}", _User.Username, errorMessage)); return(BadRequest(errorMessage)); } var chatGroupedBySender = result.GroupBy(x => new { x.Group, x.Sender }, x => new { Id = x.Id, Type = x.Type, Content = x.Content, IssuedAt = x.IssuedAt.ToString(ChatUtils.DATE_TIME_FORMAT), ExpiresAt = x.ExpiresAt, SizeInBytes = x.SizeInBytes, Duration = x.Duration, IsScrambled = x.IsScrambled }) .Select(grp => new { sender = grp.Key.Sender, group = grp.Key.Group, chat = grp.ToList().OrderBy(x => x.IssuedAt) }).ToList(); DataClassesManager.ControllerLog("info", _User.Id, this.Request.RequestUri.PathAndQuery, string.Format("{0}:count={1}", _User.Username, result.Count)); return(Ok(chatGroupedBySender)); }
public async Task <IHttpActionResult> CheckAvailability(int type, string value) { value = value.ToLower(); bool available = DataClassesManager.CheckIdentityAvailability(type, value); DataClassesManager.ControllerLog("info", value, this.Request.RequestUri.PathAndQuery, string.Format("{0}:{1}:available={2}", type, value, available)); return(Ok(new { Available = available })); }
public async Task <IHttpActionResult> Post(RegistrationDTO item) { var userId = string.Empty; if (!ModelState.IsValid) { LogManager.WriteLog("error", userId, this.Request.RequestUri.PathAndQuery, string.Format("{0}:{1}", JsonConvert.SerializeObject(item), JsonConvert.SerializeObject(ModelState))).Forget(); return(BadRequest(ModelState)); } var error = string.Empty; if (string.IsNullOrEmpty(item.Mobile) && string.IsNullOrEmpty(item.Email)) { error = "Mobile or email are required"; DataClassesManager.ControllerLog("error", userId, this.Request.RequestUri.PathAndQuery, error); return(BadRequest(error)); } long?preUserId = 0; var password = AuthorizationUtils.HashPassword(item.Password); var validation = DataClassesManager.Register(item.Username.ToLower(), password.Hash, password.Salt, item.CountryId, IdentityUtils.GetIdentitiesXML(item.Mobile, item.Email), out preUserId, out error); if (!string.IsNullOrEmpty(error)) { LogManager.WriteLog("error", userId, this.Request.RequestUri.PathAndQuery, error).Forget(); return(BadRequest(error)); } foreach (var v in validation) { IdentityUtils.ValidateIdentity(v); } LogManager.WriteLog("info", userId, this.Request.RequestUri.PathAndQuery, string.Format("{0}:{1}:{2}", preUserId, JsonConvert.SerializeObject(item), JsonConvert.SerializeObject(validation))).Forget(); return(Ok(new { RefId = preUserId, Identity = from x in validation where x.Immediate select new IdentityDTO { TypeId = x.TypeId, Value = x.Identity, Token = x.Token } } )); }
public async Task <IHttpActionResult> ValidateMobile(string id, string mobile) { DataClassesManager.ControllerLog("info", "", this.Request.RequestUri.PathAndQuery, string.Empty); var error = string.Empty; var regExp = DataClassesManager.GetRegExpByCountry(id); var result = IdentityUtils.ExactMatch(mobile, regExp); if (result) { return(Ok()); } return(BadRequest()); }
private static void SaveLog(string level, string userId, string request, string message, string category = "", string header = "") { StringBuilder builder = new StringBuilder(); builder.AppendLine(""); builder.AppendLine(string.Format("[Category:{0}]", category)); builder.AppendLine(string.Format("[UserId:{0}]", userId)); builder.AppendLine(header.Replace("\r\n", "")); builder.AppendLine(request); builder.AppendLine(message); builder.AppendLine(new string('-', 200)); if (level == "error") { log.Error(builder.ToString()); DataClassesManager.ControllerLog(level, userId, request, message, category); } else { log.Info(builder.ToString()); } }
public async Task <IHttpActionResult> ValidateIdentity(string token, string code) { DataClassesManager.ControllerLog("info", token, this.Request.RequestUri.PathAndQuery, string.Empty); var error = string.Empty; long? userId; string user_Id; var content = string.Empty; var updates = DataClassesManager.Validate(token, code, out userId, out user_Id, out content, out error); if (!string.IsNullOrEmpty(error)) { DataClassesManager.ControllerLog("error", token, this.Request.RequestUri.PathAndQuery, error); return(BadRequest(error)); } //Broadcast user joining //foreach (var update in updates) //{ // if (update.Recipients != null && update.Recipients.Count > 0) // Task.Factory.StartNew(() => ChatUtils.BroadcastUpdate((ChatUtils.NotificationTypeEnum)update.TypeId, update.Id, user_Id, update.Recipients.Select(x => x.Id).ToList(), "")); //} return(Ok()); }