/// <summary>
 ///  Generates a URL with an absolute path for the specified CRUD arguments
 /// </summary>
 /// <param name="urlHelper">The <see cref="IUrlHelper"/> to be use into the generation.</param>
 /// <param name="actionName">The name of the desired CRUD action </param>
 /// <param name="crudType">The <see cref="ICrudTypeRoutable"/> with the CRUD argument to be used</param>
 /// <param name="id">The id of the entity related to the url</param>
 /// <param name="message">The message to be displayed to the user</param>
 /// <returns>The generated URL.</returns>
 internal static string RouteUrl <TKey>(
     this IUrlHelper urlHelper,
     string actionName,
     ICrudTypeRoutable crudType,
     TKey id,
     IndexMessages message = IndexMessages.None
     )
 => GetRouteUrl(urlHelper, actionName, crudType, id, message: message);
        public virtual async Task <IActionResult> Index(
            ICrudType entitySettings,
            string id,
            IndexMessages message = IndexMessages.None
            )
        {
            var model = Settings as IIndexModel;

            model.SetData(DbContext);
            model.Message = new ViewMessage()
            {
                Text = message != IndexMessages.None
                    ? _localizer[$"GenericCrud.Index.{message.ToString()}Message"]
                    : string.Empty,
                CssClass = message == IndexMessages.EditSuccess ? "alert-success"
                    : message == IndexMessages.CreateSuccess ? "alert-success"
                    : message == IndexMessages.DeleteSuccess ? "alert-success"
                    : "alert-info"
            };

            if (!string.IsNullOrWhiteSpace(id))
            {
                model.SetId(id);
            }

            model.CurrentProcess = CrudProcesses.Index;

            if (_requiredJson)
            {
                return(new IndexModel(model).ToJson());
            }
            else if (_requiredXml)
            {
                return(new IndexModel(model).ToXml());
            }
            else
            {
                return(Content(
                           await _renderingService.RenderToStringAsync(nameof(Index), model, ViewData),
                           "text/html"
                           ));
            }
        }
Пример #3
0
        public IActionResult Index()
        {
            try
            {
                var model = new IndexMessages()
                {
                    UserList = _dbcontext.User.Include(s => s.ToMessages).Include(s => s.FromMessages).Where(c => c.ToMessages.Where(s => s.FromUserId == UserId).Count() != 0 ||
                                                                                                             c.FromMessages.Where(s => s.ToUserId == UserId).Count() != 0).ToList(),
                    PPPath = _dbcontext.User.Single(c => c.Id == UserId).PhotoPath
                };


                return(View(model));
            }
            catch (Exception e)
            {
                return(null);
            }
        }
        /// <summary>
        /// Generate the correctly response using the specified settings and arguments
        /// </summary>
        /// <param name="id">The id of the affected entity</param>
        /// <param name="message">The message to be sent into the response</param>
        /// <returns>The generated action result</returns>
        private IActionResult SendSuccessResponse(string id, IndexMessages message = IndexMessages.None)
        {
            var redirectUrl = Url.RouteUrl(
                GenericCrud.Settings.Route.RedirectIndexActionNamePattern,
                CrudType as ICrudTypeRoutable,
                id,
                message
                );

            if (Settings.UseModals)
            {
                return(Json(new JsonResponse {
                    Success = true, RedirectUrl = redirectUrl
                }));
            }
            // else if (string.IsNullOrWhiteSpace(id))
            //     return RedirectToAction(nameof(Index), new { message = message });
            else
            {
                return(Redirect(redirectUrl));
            }
        }
        /// <summary>
        ///  Generates a URL with an absolute path for the specified CRUD arguments
        /// </summary>
        /// <param name="urlHelper">The <see cref="IUrlHelper"/> to be use into the generation.</param>
        /// <param name="actionName">The name of the desired CRUD action </param>
        /// <param name="crudType">The <see cref="ICrudTypeRoutable"/> with the CRUD argument to be used</param>
        /// <param name="fileName">The name of the script to be used for form the url</param>
        /// <param name="id">The id of the entity related to the url</param>
        /// <param name="message">The message to be displayed to the user</param>
        /// <returns>The generated URL.</returns>
        private static string GetRouteUrl(
            this IUrlHelper urlHelper,
            string actionName,
            ICrudTypeRoutable crudType,
            object id             = null,
            string fileName       = null,
            IndexMessages message = IndexMessages.None
            )
        {
            var route = GetRoute(actionName, crudType, throwIfNoFoundRoute: false);

            var values = new RouteValueDictionary();

            values.Add(nameof(RouteDefaultValues.Controller), route.DefaultValues.Controller);
            values.Add(nameof(RouteDefaultValues.Action), route.DefaultValues.Action);
            values.Add(nameof(RouteDefaultValues.ModelType), route.DefaultValues.ModelType);

            if (id != null)
            {
                values.Add(nameof(id), id);
            }
            if (!string.IsNullOrWhiteSpace(fileName))
            {
                values.Add(nameof(fileName), fileName);
            }
            if (message != IndexMessages.None)
            {
                values.Add(nameof(message), message);
            }

            var url = urlHelper.RouteUrl(route?.Name ?? actionName, values);

            if (string.IsNullOrWhiteSpace(url))
            {
                url = route.Pattern;
                if (id != null)
                {
                    var str = id.ToString();
                    if (string.IsNullOrWhiteSpace(str))
                    {
                        url = url.Replace("/{id}", str);
                    }
                    else
                    {
                        url = url.Replace("{id}", str);
                    }
                }
                if (!string.IsNullOrWhiteSpace(fileName))
                {
                    url = url.Replace("{filename}", fileName);
                }
                if (message != IndexMessages.None)
                {
                    url = url.Replace("{message}", message.ToString());
                }

                if (!url.StartsWith("/"))
                {
                    url = $"/{url}";
                }
            }

            return(url);
        }