public IActionResult Index(string?id) { IEnumerable <Дружба> друзья; if (id == null) { Guid Id = Guid.Parse(HttpContext.User.Identity.Name); ViewData["id"] = Id; Microsoft.Data.SqlClient.SqlParameter param = new Microsoft.Data.SqlClient.SqlParameter("@FriendID", Id); друзья = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList(); друзья = друзья.Where(t => t.Код_статуса == 2).ToList(); } else { ViewData["id"] = id; Microsoft.Data.SqlClient.SqlParameter param = new Microsoft.Data.SqlClient.SqlParameter("@FriendID", Guid.Parse(id)); друзья = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList(); друзья = друзья.Where(t => t.Код_статуса == 2).ToList(); } List <UserFriendBlogViewModel> users = new List <UserFriendBlogViewModel>(); foreach (var друг in друзья) { Аватарка аватарка = _context.Аватарка.Include(t => t.Данные).FirstOrDefault(t => t.ID_Пользователя == друг.ID_Друга); users.Add(new UserFriendBlogViewModel() { Аватарка = аватарка, CountBlogs = 0, CountFollowers = 0, дружбы = null, пользователь = _context.Пользователь.FirstOrDefault(t => t.ID == друг.ID_Друга), }); } return(View(users)); }
private static void AddSqlParameter(StringBuilder sqlColumns, List <object> sqlParameters, TableInfo tableInfo, string columnName, object value) { var paramName = $"@param_{sqlParameters.Count}"; if (columnName != null && tableInfo.ConvertibleColumnConverterDict.TryGetValue(columnName, out var valueConverter)) { value = valueConverter.ConvertToProvider.Invoke(value); } // will rely on SqlClientHelper.CorrectParameterType to fix the type before executing var sqlParameter = TryCreateRelationalMappingParameter(columnName, paramName, value, tableInfo); if (sqlParameter == null) { sqlParameter = new Microsoft.Data.SqlClient.SqlParameter(paramName, value ?? DBNull.Value); var columnType = tableInfo.ColumnNamesTypesDict[columnName]; if (value == null && columnType.Contains(DbType.Binary.ToString(), StringComparison.OrdinalIgnoreCase)) //"varbinary(max)".Contains("binary") { sqlParameter.DbType = DbType.Binary; // fix for ByteArray since implicit conversion nvarchar to varbinary(max) is not allowed } } sqlParameters.Add(sqlParameter); sqlColumns.Append($" {paramName}"); }
public IActionResult Create([Bind("Id,LoaiDichVuName,Description")] LoaiDichVu loaiDichVu) { if (ModelState.IsValid) { var ten = new Microsoft.Data.SqlClient.SqlParameter("@Ten", loaiDichVu.LoaiDichVuName); var mota = new Microsoft.Data.SqlClient.SqlParameter("@mota", loaiDichVu.Description); _context.Database.ExecuteSqlRaw("EXEC dbo.spAddLoaiDichVu @Ten,@mota", ten, mota); return(RedirectToAction(nameof(Index))); } return(View(loaiDichVu)); }
// Method to update the DB with new model parameteres on the basis of email public void UpdateDb(DbModelEmail model) { using (var connection = new MSDSC.SqlConnection("Server=(localdb)\\MSSQLLocalDB;Database=DBEmailScheduler;Trusted_Connection=True;")) { connection.Open(); if (connection.State.Equals(SD.ConnectionState.Open)) { using (var command = new MSDSC.SqlCommand()) { MSDSC.SqlParameter param; command.Connection = connection; command.CommandType = SD.CommandType.Text; command.CommandText = @" UPDATE dbo.tb_emails SET isFirstEmailSent = @isFirstEmailSent, isOpened = @isEmailOpened, remainingReminderDays = @remainingReminderDays WHERE emailID = @emailID" ; int IsOpened = (model.IsOpened == true) ? 1 : 0; int IsFirstEmailSent = (model.IsFirstEmailSent == true) ? 1 : 0; param = new MSDSC.SqlParameter("@isFirstEmailSent", SD.SqlDbType.Int); param.Value = IsFirstEmailSent; command.Parameters.Add(param); param = new MSDSC.SqlParameter("@isEmailOpened", SD.SqlDbType.Int); param.Value = IsOpened; command.Parameters.Add(param); param = new MSDSC.SqlParameter("@remainingReminderDays", SD.SqlDbType.Int); param.Value = model.RemainingReminderDays; command.Parameters.Add(param); param = new MSDSC.SqlParameter("@emailID", SD.SqlDbType.NVarChar); param.Value = model.Email; command.Parameters.Add(param); int affectedRows = command.ExecuteNonQuery(); System.Console.WriteLine("DB Updated! Number of rows affected : " + affectedRows); } } } }
protected override IDbDataParameter CreateParameter(String name, DataType dataType) { var sqlDbType = dataType.DbType.SqlServerDbType.ToString().ToEnum <SqlDbType>().Value; var p = new Microsoft.Data.SqlClient.SqlParameter(name, sqlDbType); if (dataType is SqlInputParameter dType) { p.Direction = dType.ParameterDirection; } if (p.Direction != ParameterDirection.Output) { if (dataType.DbType.SqlServerDbType == SqlServer2012DbType.Udt) { p.SetUdtTypeName(dataType.UdtTypeName); p.Value = this.GetParameterValue(dataType, dataType.DbType.SqlServerDbType.Value, dataType.UdtTypeName); } else { p.Value = this.GetParameterValue(dataType, dataType.DbType.SqlServerDbType.Value); } } return(p); }
public IActionResult Requests(string?type) { IEnumerable <Дружба> друзья; Guid Id = Guid.Parse(HttpContext.User.Identity.Name); ViewData["id"] = Id; Microsoft.Data.SqlClient.SqlParameter param = new Microsoft.Data.SqlClient.SqlParameter("@FriendID", Id); if (type == "inner" || type == null) { друзья = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList().Where(t => t.Код_статуса == 5).ToList(); ViewData["type"] = "inner"; } else { друзья = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList().Where(t => t.Код_статуса == 1).ToList(); ViewData["type"] = "outer"; } друзья = (from другинфо in _context.Дружба.Include(t => t.Друг).ToList() join друг in друзья.ToList() on другинфо.ID_Друга equals друг.ID_Друга where друг.Дата_изиенения_статуса == другинфо.Дата_изиенения_статуса && друг.ID_Пользователя == другинфо.ID_Пользователя select другинфо).ToList(); List <UserFriendBlogViewModel> users = new List <UserFriendBlogViewModel>(); foreach (var friend in друзья) { users.Add(new UserFriendBlogViewModel() { пользователь = _context.Пользователь.FirstOrDefault(t => t.ID == friend.ID_Друга), Аватарка = _context.Аватарка.Include(t => t.Данные).FirstOrDefault(t => t.ID_Пользователя == friend.ID_Друга), CountBlogs = 0, дружбы = null, CountFollowers = 0, }); } return(View(users)); }
public IActionResult FindByName(string?id, string?pattern) { IEnumerable <Дружба> друзья; if (id == null) { Guid Id = Guid.Parse(HttpContext.User.Identity.Name); ViewData["id"] = Id; Microsoft.Data.SqlClient.SqlParameter param = new Microsoft.Data.SqlClient.SqlParameter("@FriendID", Id); друзья = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList().Where(t => t.Код_статуса == 2).ToList(); } else { ViewData["id"] = id; Microsoft.Data.SqlClient.SqlParameter param = new Microsoft.Data.SqlClient.SqlParameter("@FriendID", Guid.Parse(id)); друзья = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList().Where(t => t.Код_статуса == 2).ToList(); } List <UserFriendBlogViewModel> users = new List <UserFriendBlogViewModel>(); foreach (var друг in друзья) { Пользователь пользователь = _context.Пользователь.FirstOrDefault(t => t.ID == друг.ID_Друга && EF.Functions.Like(t.Фамилия, pattern + "%")); if (пользователь != null) { users.Add(new UserFriendBlogViewModel() { пользователь = пользователь, Аватарка = _context.Аватарка.Include(t => t.Данные).FirstOrDefault(t => t.ID_Пользователя == пользователь.ID), CountBlogs = 0, CountFollowers = 0, дружбы = null }); } } return(PartialView("_Friends", users)); }
public IActionResult GetUserInfo(string?id) { Пользователь пользователь; if (id == null) { id = HttpContext.User.Identity.Name; } пользователь = _context.Пользователь.FirstOrDefault(t => t.ID == Guid.Parse(id)); Microsoft.Data.SqlClient.SqlParameter param = new Microsoft.Data.SqlClient.SqlParameter("@FriendID", пользователь.ID); IEnumerable <Дружба> Friends = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList().ToList(); int CountFollowers = _context.Дружба.FromSqlRaw("EXEC GetFriends @FriendID", param).ToList().Where(t => t.Код_статуса == 1).Count(); int BlogsCount = (from блог in _context.Блог join подписчик in _context.Подписчик on блог.ID_Блога equals подписчик.ID_Блога where подписчик.ID_Пользователя == пользователь.ID select new { id = блог.ID_Блога }).ToList().Count(); Аватарка аватарка = _context.Аватарка.Include(t => t.Данные).FirstOrDefault(t => t.ID_Пользователя == Guid.Parse(id) && t.Используется == true); List <Запись> записи = _context.Запись.Include(t => t.Блог).Include(t => t.Коментарии).Include(t => t.Действия).Include(t => t.Приложения) .Where(t => t.Блог.Код_типа == 4 && t.Блог.Код_типа_тематики == 15 && t.Блог.ID_Создателя == Guid.Parse(id) && t.Удалён == 0) .OrderByDescending(t => t.Дата_публикации).ToList(); List <PostBlogCommentActionViewModel> posts = new List <PostBlogCommentActionViewModel>(); List <Данные> все_данные = (from данные in _context.Данные join приложение in _context.Приложение on данные.ID equals приложение.ID_Data join запись in _context.Запись on приложение.ID_Записи equals запись.ID_Записи join блог in _context.Блог on запись.ID_Блога equals блог.ID_Блога where блог.ID_Создателя == Guid.Parse(id) && блог.Код_типа == 4 select данные).ToList(); foreach (var item in записи) { List <Дествие> дествия = _context.Дествие.Include(t => t.Пользователь).Where(t => t.ID_Записи == item.ID_Записи).ToList(); List <Данные> данные = (from данное in все_данные join приложение in item.Приложения on данное.ID equals приложение.ID_Data select данное).ToList(); posts.Add(new PostBlogCommentActionViewModel() { Блог = item.Блог, Дествия = дествия, Запись = item, Коментарии = item.Коментарии, Данные = данные }); } Guid id_personal_blog = _context.Блог.First(t => t.ID_Создателя == пользователь.ID && t.Код_типа == 4).ID_Блога; UserFriendBlogViewModel userFriendBlogViewModel = new UserFriendBlogViewModel { пользователь = пользователь, CountBlogs = BlogsCount, CountFollowers = CountFollowers, дружбы = Friends, Аватарка = аватарка, записи_пользователя = posts, Id_personal_Blog = id_personal_blog }; return(View(userFriendBlogViewModel)); }
private static string GetSqlSetSegment(DbContext context, TableInfo tableInfo, Type updateValuesType, object updateValues, object defaultValues, List <string> updateColumns, List <object> parameters) { string sql = string.Empty; foreach (var propertyNameColumnName in tableInfo.PropertyColumnNamesDict) { string propertyName = propertyNameColumnName.Key; string columnName = propertyNameColumnName.Value; var pArray = propertyName.Split(new char[] { '.' }); Type lastType = updateValuesType; PropertyInfo property = lastType.GetProperty(pArray[0]); if (property != null) { object propertyUpdateValue = property.GetValue(updateValues); object propertyDefaultValue = property.GetValue(defaultValues); for (int i = 1; i < pArray.Length; i++) { lastType = property.PropertyType; property = lastType.GetProperty(pArray[i]); propertyUpdateValue = propertyUpdateValue != null?property.GetValue(propertyUpdateValue) : propertyUpdateValue; var lastDefaultValues = lastType.Assembly.CreateInstance(lastType.FullName); propertyDefaultValue = property.GetValue(lastDefaultValues); } if (tableInfo.ConvertibleColumnConverterDict.ContainsKey(columnName)) { bool isEnum = tableInfo.ColumnToPropertyDictionary[columnName].ClrType.IsEnum; if (!isEnum) // Omit from ConvertibleColumns because there Enum of byte type gets converter to Number which is then different from default enum value // Test: RunBatchUpdateEnum { propertyUpdateValue = tableInfo.ConvertibleColumnConverterDict[columnName].ConvertToProvider.Invoke(propertyUpdateValue); propertyDefaultValue = tableInfo.ConvertibleColumnConverterDict[columnName].ConvertToProvider.Invoke(propertyDefaultValue); } } bool isDifferentFromDefault = propertyUpdateValue != null && propertyUpdateValue?.ToString() != propertyDefaultValue?.ToString(); bool updateColumnExplicit = updateColumns != null && updateColumns.Contains(propertyName); if (isDifferentFromDefault || updateColumnExplicit) { sql += $"[{columnName}] = @{columnName}, "; var parameterName = $"@{columnName}"; IDbDataParameter param = TryCreateRelationalMappingParameter(columnName, parameterName, propertyUpdateValue, tableInfo); if (param == null) { propertyUpdateValue ??= DBNull.Value; param = new Microsoft.Data.SqlClient.SqlParameter(); param.ParameterName = $"@{columnName}"; param.Value = propertyUpdateValue; if (!isDifferentFromDefault && propertyUpdateValue == DBNull.Value && property.PropertyType == typeof(byte[])) // needed only when having complex type property to be updated to default 'null' { param.DbType = DbType.Binary; // fix for ByteArray since implicit conversion nvarchar to varbinary(max) is not allowed } } parameters.Add(param); } } } if (string.IsNullOrEmpty(sql)) { throw new InvalidOperationException("SET Columns not defined. If one or more columns should be updated to theirs default value use 'updateColumns' argument."); } sql = sql.Remove(sql.Length - 2, 2); // removes last excess comma and space: ", " return($"SET {sql}"); }
public IActionResult Dialog(string id, string?typeid) { Guid IdUser = Guid.Parse(HttpContext.User.Identity.Name); List <Пользователь> Пользователи = new List <Пользователь>(); List <Сообщения> Сообщения; MessagessWithUsersViewModel messagessWithUsersViewModel; if (id == null) { RedirectToAction("Conversations"); } if (typeid != null) { if (typeid == "friendid") { Guid IdFriend = Guid.Parse(id); Microsoft.Data.SqlClient.SqlParameter param1 = new Microsoft.Data.SqlClient.SqlParameter("@ID1", IdFriend); Microsoft.Data.SqlClient.SqlParameter param2 = new Microsoft.Data.SqlClient.SqlParameter("@ID2", IdUser); Беседа беседа_персональная = _context.Беседа.FromSqlRaw("EXECUTE GetPersonalConvs @ID1, @ID2", new SqlParameter[] { param1, param2 }).AsEnumerable().FirstOrDefault(); if (беседа_персональная == null) { Пользователи.Add(_context.Пользователь.FirstOrDefault(t => t.ID == IdUser)); Пользователи.Add(_context.Пользователь.FirstOrDefault(t => t.ID == IdFriend)); Сообщения = new List <Сообщения>(); messagessWithUsersViewModel = new MessagessWithUsersViewModel { сообщения = Сообщения, пользователи = Пользователи }; return(View(messagessWithUsersViewModel)); } id = беседа_персональная.ID_Беседы.ToString(); } } Guid Id = Guid.Parse(id); Беседа беседа = _context.Беседа.Include(t => t.Участники).FirstOrDefault(t => t.ID_Беседы == Id); Сообщения = _context.Сообщения.Include(t => t.Участник).Where(t => t.ID_беседы == Id).OrderBy(t => t.Дата_отправки).Take(100).ToList(); bool isForCurrentUser = false; /*if (беседа == null) * { * var Id_бесед = _context.Участник.Where(t => t.ID_Пользователя == Id).Select(t => t.ID_беседы).ToList(); * List<Беседа> беседы_личные = new List<Беседа>(); * foreach (var idшка in Id_бесед) * { * беседы_личные * } * }*/ foreach (var item in беседа.Участники) { Пользователи.Add(_context.Пользователь.FirstOrDefault(t => t.ID == item.ID_Пользователя)); if (item.ID_Пользователя == IdUser) { isForCurrentUser = true; } } messagessWithUsersViewModel = new MessagessWithUsersViewModel { сообщения = Сообщения, пользователи = Пользователи }; if (isForCurrentUser) { return(View(messagessWithUsersViewModel)); } return(RedirectToAction("Conversations")); }