Untitled

 avatar
unknown
plain_text
4 years ago
22 kB
4
Indexable
MVCGridDefinitionTable.Add("PendingRegistrationGrid", new MVCGridBuilder<PendingRegistrationGridModel>(colDefaults)
                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                .AddColumns(cols =>
                {
                    cols.Add("AgentName").WithHeaderText("Agjenti")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithValueExpression(p => p.AgentName);
                    cols.Add("SalesAgent").WithHeaderText("A. Shitjeve")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithValueExpression(p => p.SalesAgent);
                    cols.Add("City").WithHeaderText("Qyteti")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithValueExpression(p => p.City);
                    cols.Add("MainCategory").WithHeaderText("Kategorite")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithValueExpression(p => p.MainCategory);
                    cols.Add("Executive")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithHtmlEncoding(false)
                        .WithHeaderText("Executive")
                        .WithValueExpression(p => p.ExecutiveConfirmation.Equals("N/Confirmed") ? "text-red" : "text-green")
                        .WithPlainTextValueExpression(p => p.ExecutiveConfirmation)
                        .WithValueTemplate("<span class='label {Value}'>{Model.ExecutiveConfirmation}</span>");
                    cols.Add("SalesStatus")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithHtmlEncoding(false)
                        .WithHeaderText("Sales")
                        .WithValueExpression(p => p.SalesStatus.Equals("N/Confirmed") ? "text-red" : "text-green")
                        .WithPlainTextValueExpression(p => p.SalesStatus)
                        .WithValueTemplate("<span class='label {Value}'>{Model.SalesStatus}</span>");
                    cols.Add("Operations")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithHtmlEncoding(false)
                        .WithHeaderText("Operations")
                        .WithValueExpression(p => p.OperationsStatus.Equals("N/Confirmed") ? "text-red" : "text-green")
                        .WithPlainTextValueExpression(p => p.OperationsStatus)
                        .WithValueTemplate("<span class='label {Value}'>{Model.OperationsStatus}</span>");
                    cols.Add("RequestDate").WithHeaderText("Kerkuar me")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithValueExpression(p => p.InsertedDate.ToString("dd/MM/yyyy"));
                    cols.Add("Status")
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithHtmlEncoding(false)
                        .WithHeaderText("Status")
                        .WithValueExpression(p => p.Status.Equals("Opened") ? "text-green" : "text-red")
                        .WithPlainTextValueExpression(p => p.Status)
                        .WithValueTemplate("<span class='label {Value}'>{Model.Status}</span>");
                    cols.Add("ViewLink").WithSorting(false)
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithHeaderText("Me shume")
                        .WithHtmlEncoding(false)
                        .WithValueExpression((p, c) => c.UrlHelper.Action("RegistrationInfo", "RegisterAgent", new { id = p.TempRegistrationId }))
                        .WithPlainTextValueExpression(p => p.TempRegistrationId.ToString())
                        .WithValueTemplate("<a class='text-more' href='{Value}'>Info</a>");
                    cols.Add("ConfirmLink").WithSorting(false)
                        .WithVisibility(visible: true, allowChangeVisibility: true)
                        .WithHeaderText("Konfirmo")
                        .WithHtmlEncoding(false)
                        .WithValueExpression(p => p.Id.ToString())
                        .WithPlainTextValueExpression(p => p.Id.ToString())
                        .WithValueTemplate("<a class='text-more' onclick='confirm({Value})' href='#'>Konfirmo</a>");
                })
                .WithSorting(true, "AgentName")
                .WithAdditionalQueryOptionNames("Search")
                .WithAdditionalQueryOptionNames("searchSalesAgent")
                .WithAdditionalQueryOptionNames("searchCity")
                .WithAdditionalQueryOptionNames("searchRequestDate")
                .WithAdditionalQueryOptionNames("searchMainCategory")
                .WithAdditionalQueryOptionNames("searchExecutive")
                .WithAdditionalQueryOptionNames("searchOperations")
                .WithAdditionalQueryOptionNames("searchSales")
                .WithAdditionalQueryOptionNames("searchExecutive")
                .WithAdditionalQueryOptionNames("searchStatus")
                .WithPaging(true, 10, true, 100)
                .WithRetrieveDataMethod((context) =>
                {
                    var options = context.QueryOptions;
                    var result = new QueryResult<PendingRegistrationGridModel>();
                    using (var db = new Entities())
                    {
                        var query = db.Database
                            .SqlQuery<RegistrationRequestStoredProc>("RegistrationRequestGrid").AsEnumerable();
                        List<PendingRegistrationGridModel> registrations = new List<PendingRegistrationGridModel>();
                        foreach (var registration in query)
                        {
                            PendingRegistrationGridModel temp = new PendingRegistrationGridModel();
                            temp.Id = registration.Id;
                            ChooseMainCategoriesModel mainCategoriesModel = JsonConvert.DeserializeObject<ChooseMainCategoriesModel>(registration.MainCategoriesSerialized);
                            temp.MainCategory = string.Join("/", mainCategoriesModel.MainCategories.Where(a=>a.Choosen).Select(a=>a.MainCategory.Substring(0,1)).ToArray());

                            AgentDataModel agentData = new AgentDataModel();

                            if (registration.AgentsDataSerialized == null)
                            {
                                var agentId = db.TempRegistration.FirstOrDefault(a => a.Id == registration.TempRegistrationId).ExistingAgentId;
                            }
                            else
                            {
                                agentData = JsonConvert.DeserializeObject<AgentDataModel>(registration.AgentsDataSerialized);
                            }

                            //AgentDataModel agentData = JsonConvert.DeserializeObject<AgentDataModel>(registration.AgentsDataSerialized);
                            temp.AgentName = agentData.PersonalData.FirstName + " " + agentData.PersonalData.Surname;
                            temp.City = db.Cities.FirstOrDefault(a=>a.Id == agentData.Location.CityID).Name;
                            temp.SalesAgent = registration.Username;
                            temp.OperationsStatus = registration.OperationsStatus;
                            temp.SalesStatus = registration.SalesStatus;
                            temp.ExecutiveConfirmation = registration.ExecutiveStatus;
                            temp.Status = registration.Status;
                            temp.InsertedDate = registration.InsertedDate;
                            temp.TempRegistrationId = registration.TempRegistrationId;

                            registrations.Add(temp);
                        }

                        IEnumerable<PendingRegistrationGridModel> regModel = registrations.AsEnumerable();
                         
                        result.TotalRecords = regModel.Count();
                        if (!String.IsNullOrWhiteSpace(options.SortColumnName))
                        {
                            switch (options.SortColumnName.ToLower())
                            {
                                case "agentname":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.AgentName);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.AgentName);
                                            break;
                                    }
                                    break;
                                case "salesagent":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.SalesAgent);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.SalesAgent);
                                            break;
                                    }
                                    break;
                                case "city":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.City);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.City);
                                            break;
                                    }
                                    break;
                                case "maincategory":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.MainCategory);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.MainCategory);
                                            break;
                                    }
                                    break;
                                case "executive":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.ExecutiveConfirmation);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.ExecutiveConfirmation);
                                            break;
                                    }
                                    break;
                                case "operations":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.OperationsStatus);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.OperationsStatus);
                                            break;
                                    }
                                    break;
                                case "salesstatus":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.SalesStatus);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.SalesStatus);
                                            break;
                                    }
                                    break;
                                case "requestdate":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.InsertedDate);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.InsertedDate);
                                            break;
                                    }
                                    break;
                                case "status":
                                    switch (options.SortDirection)
                                    {
                                        case SortDirection.Asc:
                                            regModel = regModel.OrderBy(p => p.Status);
                                            break;
                                        case SortDirection.Dsc:
                                            regModel = regModel.OrderByDescending(p => p.Status);
                                            break;
                                    }
                                    break;
                            }
                        }
                        foreach (var regModelOption in options.AdditionalQueryOptions)
                        {
                            if (string.IsNullOrEmpty(regModelOption.Value) == true)
                            {
                                continue;
                            }
                            switch (regModelOption.Key)
                            {
                                case "Search":
                                    regModel = regModelOption.Value.StartsWith("!") == true
                                        ? regModel.Where(a => a.AgentName.Contains(regModelOption.Value.Substring(1), StringComparison.OrdinalIgnoreCase) == false) :
                                        regModel.Where(a => a.AgentName.Contains(regModelOption.Value, StringComparison.OrdinalIgnoreCase));
                                    break;
                                case "searchSalesAgent":
                                    regModel = regModelOption.Value.StartsWith("!") == true ?
                                        regModel.Where(a => a.SalesAgent.Contains(regModelOption.Value.Substring(1), StringComparison.OrdinalIgnoreCase) == false) :
                                        regModel.Where(a => a.SalesAgent.Contains(regModelOption.Value, StringComparison.OrdinalIgnoreCase));
                                    break;
                                case "searchRequestDate":
                                    regModel = regModel.Where(a => a.InsertedDate == DateTime.Parse(regModelOption.Value));
                                    break;
                                case "searchCity":
                                    if (regModelOption.Value.StartsWith("!") == true)
                                    {
                                        regModel = regModel.Where(a => a.City.Contains(regModelOption.Value.Substring(1), StringComparison.OrdinalIgnoreCase) == false);
                                    }
                                    else
                                        regModel = regModel.Where(a => a.City.Contains(regModelOption.Value, StringComparison.OrdinalIgnoreCase));
                                    break;
                                case "searchMainCategory":
                                    if (regModelOption.Value.StartsWith("!") == true)
                                    {
                                        regModel = regModel.Where(a => a.MainCategory.Contains(regModelOption.Value.Substring(1), StringComparison.OrdinalIgnoreCase) == false);
                                    }
                                    else
                                        regModel = regModel.Where(a => a.MainCategory.Contains(regModelOption.Value, StringComparison.OrdinalIgnoreCase));
                                    break;
                                case "searchStatus":
                                    regModel = regModelOption.Value.StartsWith("!") == true
                                        ? regModel.Where(a => a.Status.Contains(regModelOption.Value.Substring(1), StringComparison.OrdinalIgnoreCase) == false) :
                                        regModel.Where(a => a.Status.Contains(regModelOption.Value, StringComparison.OrdinalIgnoreCase));
                                    break;
                                case "searchOperations":
                                    switch (regModelOption.Value)
                                    {
                                        case "":
                                            break;
                                        case "PO":
                                            regModel = regModel.Where(a => a.OperationsStatus.Equals("Confirmed"));
                                            break;
                                        case "JO":
                                            regModel = regModel.Where(a => a.OperationsStatus.Equals("Confirmed") == false);
                                            break;
                                    }
                                    break;
                                case "searchSales":
                                    switch (regModelOption.Value)
                                    {
                                        case "":
                                            break;
                                        case "PO":
                                            regModel = regModel.Where(a => a.SalesStatus.Equals("Confirmed"));
                                            break;
                                        case "JO":
                                            regModel = regModel.Where(a => a.SalesStatus.Equals("Confirmed") == false);
                                            break;
                                    }
                                    break;
                                case "searchExecutive":
                                    switch (regModelOption.Value)
                                    {
                                        case "":
                                            break;
                                        case "PO":
                                            regModel = regModel.Where(a => a.ExecutiveConfirmation.Equals("Confirmed"));
                                            break;
                                        case "JO":
                                            regModel = regModel.Where(a => a.ExecutiveConfirmation.Equals("N/Confirmed"));
                                            break;
                                        case "N/A":
                                            regModel = regModel.Where(a => a.ExecutiveConfirmation.Equals("N/A"));
                                            break;
                                        case "NN/A":
                                            regModel = regModel.Where(a => a.ExecutiveConfirmation.Equals("N/A") == false);
                                            break;
                                    }
                                    break;
                            }
                        }

                        result.TotalRecords = regModel.Count();
                        //string epIdSearch = options.GetAdditionalregModelOptionString("");
                        //if (string.IsNullOrEmpty(globalSearch) == false)
                        //{
                        //    regModel = regModel.Where(a => (a.AgentName + " " + a.City).Contains(globalSearch, StringComparison.OrdinalIgnoreCase));
                        //}

                        if (options.GetLimitOffset().HasValue)
                        {
                            regModel = regModel.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value);
                        }
                        result.Items = regModel.ToList();
                    }
                    return result;
                })
            );
            #endregion
Editor is loading...