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}");
        }
Example #3
0
        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));
        }
Example #8
0
        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}");
        }
Example #10
0
        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"));
        }