Error to deploy a new version of source code from appStudio

I am playing with appstudio.windowsphone.com and i created a demo app using public information about Microsof MVP Award Program.

The app looks like this :

mvp app preview

Note this is a demo test! Not the most beautiful app in the world :D

I generate the first version of the app for Windows 8 and i got the source code ( i choose this option because it gives me the universal app with code for Windows Phone and Windows 8!) then i did some tests in my device Nokia Lumia 925!

After some tests i want to the appstudio website and I did some changes, and then i generate the app and got the code again.

When i tried to deploy this version to my device I got a error:

mvp app error

The error “Error 1 Error : DEP0001 : Unexpected Error: Exception from HRESULT: 0×81030137 AppStudio.WindowsPhone”  don´t says anything about what’s happened! Bad message error…

Then i went to the app list

app list
and i found that the last version from the app is installed, then i removed it and did a another deploy and now it works! :D

Windows Phone 8.1 and Windows 8.1 Update

The //build/ ends last week and since last week were published some great articles. For help who is missing these great articles i create some curation in Curah! Project that i want to share :)

Here are:

 

 

My selection of session from //Build/ sessions

 

The //Build/ sessions are availbles! And i choose some sessions about Windows Phone and Windows 8.1! Here is the list:

Visual Studio Evolution

Visual Studio Evolution – Microsoft Lisbon Experience

Começa: segunda-feira, 24 de Março de 2014 09:00
Termina: segunda-feira, 24 de Março de 2014 13:00

Rua do Fogo de Santelmo, Lote 2.07.02

1990 – 110 Lisboa Portugal
Idioma(s): Português.
Produto(s): Microsoft Visual Studio e Windows Azure.
Destinatário(s): Arquitecto, BDM com influências tecnológicas, Formação – Parceiros, Gestor de TI, Implem_Apl. TI/Espec. LOB, Programador Generalista, Programador Pro e Verificadores.

Ao longo dos últimos anos temos trabalhado a família de soluções Visual Studio para que tenha nas suas mãos as ferramentas mais avançadas do planeta que lhe permitem, e à sua equipa, criar aplicações extraordinárias que todos os dias fazem a diferença nos seus utilizadores.
Agora, com o Visual Studio Online, demos um passo mais além trazendo o poder e flexibilidade da Cloud para o seu próprio ambiente de desenvolvimento, para que se possa focar naquilo que mais interessa: a sua equipa e as suas aplicações.

E com este evento, o primeiro onde vamos abordar este tema, queremos ajudá-lo a estar na linha da frente mostrando-lhe em primeira mão os detalhes técnicos desta nova era do Visual Studio – uma agenda que irá incluir um overview destas novidades mas igualmente uma abordagem em profundidade a tópicos como Testes (usando o VS Online e o Windows Azure) ou as novas soluções de Application Insights incluídas na plataforma.

Tudo, para que conheça o que pode fazer com estas novas ferramentas que pode já hoje começar a experimentar.

Contamos consigo!
A Equipa Visual Studio da Microsoft Portugal

AGENDA:

9h00 – Registo & Credenciação

09h30 – 10h30 – Visual Studio Online – Tiago Pascoal

10h30 – 11h00 – Coffee Break

11h00-11h45 – Testes com Visual Studio Online e Azure – Luis Calado

11h50-12h50 –  Application Insights – José António Silva

12h50 – Encerramento

 

Mais informações aqui.

 

XLVII Encontro da Comunidade SQLPort

Data Evento:

13 Mar 2014 – 18:30

Local do Evento:

Edifício D. Henrique, Rua do Bolhão, 221 B-1º, 4000-112 PORTO

Realiza-se no dia 13 de Março de 2014, o XLVII Encontro da comunidade SQLPort, que tem como objectivo a partilha de experiências e conhecimento entre os profissionais e entusiastas de SQL Server em Portugal. O evento vai ser realizado no PORTO, no auditório da Rumos Portugal, pelas 18:30, sendo a entrada livre para todos os inscritos.

Nesta sessão temos um Voucher de Formação Rumos para sortear:
10777 – Implementing a Data Warehouse with Microsoft SQL Server 2012
de 5 a 9 de Maio, Laboral

 

Agenda:

18:30 – Abertura e recepção.
19:00 – Community News
19:10 – «Introdução ao Performance Tunning» – Niko Neugebauer (SQL Server MVP, Consultor Independente)
20:10 – Coffee break
20:30 – «Project Sienna – The Gist» –  Paulo Matos (Consultor Independente)
21:30 – Sorteio de prémios
21:50 – Fim do evento
22:00 – Jantar livre

Niko Neugebauer é um consultor Independente, que possui uma experiência de mais de 15 anos nas áreas IT. SQL Server MVP desde 2011 e apresentador regular nos eventos nacionais e internacionas como SQLSaturday, PASS Summit, SQLBits e SQLRally, o foco profissional dele é o plataforma de dados da Microsoft. É o actual líder e fundador da comunidade SQLPort.

A apresentação dele vai se focar nas bases de melhoria de desempenho do SQL Server. Operações básicas de planos de execução de Queries e maneiras para melhoria deles são os tópicos de apresentação dele.

 

Paulo MatosA segunda apresentação será feita pelo Paulo Matos. Consultor Independente, desde de 1996 que desenvolve e implementa sistemas de informação para os mais diversos tipos de negócios. Sempre que possível, investe tempo a formar e treinar pessoas das mais diversas idades e origens, na utilização e desenvolvimento de sistemas de informação.

45ª Reunião Presencial da Comunidade NetPonto em Lisboa

No dia 22-02-2014 será realizada a 45ª Reunião Presencial da Comunidade NetPonto em Lisboa. Para participar, efectue o registo de acordo com as instruções abaixo.

Agenda

09:45  - Recepção dos participantes
10:00  - SQL Server 2014 In-Memory OLTP – Game Changer para os ProgramadoresPedro Correia
Embora ainda não tenha sido lançado, o novo SQL 2014 irá incorporar um novo componente que já começa a revolucionar a maneira como os programadores interagem com o SQL Server.  Nesta sessão iremos:

  • Dar a conhecer e contextualizar este novo componente: “In-Memory OLTP”;
  • Deixar a plateia estupefacta com os ganhos de performance que conseguimos obter;
  • Perceber as alterações a nível interno do SQL que permitem obter estes ganhos;
  • Elencar alterações necessárias na interação com o SQL Server 2014 que os programadores terão que adotar.
11:30  - Intervalo
12:00  - Team Foundation Server…Muito mais do que um gestor de versões.Pedro Rosa
Muitos de nós vemos o TFS como sendo apenas um gestor de versões, mas é muito mais do que isso.Nesta apresentação vai ser possível perceber como utilizar o TFS desde o inicio de um projeto, até a sua conclusão e durante a fase de manutenção.

A utilização dos templates adequados à metodologia que escolhemos, o controlo através dos workitems, tarefas e bugs, o relacionamento com o cliente através dos reports em excel, project ou pdf, o gestor de versões, a possibilidade de comunicação entre membros da equipa de uma forma simples, eficaz e com histórico, fazem desta ferramenta a minha ferramenta de eleição no que toca a gestão do ciclo de vida de um projeto de desenvolvimento de software.

Durante a apresentação vamos poder acompanhar estes pontos com um caso prático de uso de TFS.

13:30  - Painel de Discussão e Sorteio de Prémios
Nota: Ao final da reunião, escolhemos um restaurante próximo e fazemos um almoço em grupo para continuar o convívio e aproximar as pessoas. A participação é opcional.

Local

Microsoft Portugal – Auditório
Rua do Fogo de Santelmo, Lote 2.07.02
1990-110 Lisboa
Portugal

Clique para ampliar o mapa.

Patrocinador “Gold


Patrocinadores “Silver


Patrocinador “Bronze


Mais Comunidade NetPonto:

Sample for to list, sort, search data and add pagination in ASP.Net MVC 5

This article has the goal to show a sample to list data, sort data, search data and add pagination.

First install the nuget package for PagedList.MVC

pagedList.MVC install
Complete code:

The controller products

 public class ProductsController : Controller
    {
        private readonly ICommandBus _commandBus;
        private readonly IBrandRepository _brandRepository;
        private readonly ICategoryRepository _categoryRepository;
        private readonly IProductRepository _productRepository;
        private readonly IProductImageRepository _productImageRepository;
        private readonly IUserRepository _userRepository;
        private const int PageSize = 10;

        public ProductsController(ICommandBus commandBus,
                                    IBrandRepository brandRepository,
                                    ICategoryRepository categoryRepository,
                                    IProductRepository productRepository, 
                                    IProductImageRepository productImageRepository,
                                    IUserRepository userRepository)
        {
            _commandBus = commandBus;
            _brandRepository = brandRepository;
            _categoryRepository = categoryRepository;
            _productRepository = productRepository;
            _productImageRepository = productImageRepository;
            _userRepository = userRepository;
        }

        public ActionResult Index(string sortOrder, string currentFilter, string searchByName,string searchByDescription, string searchByUser, string searchByBrand, string searchByCategory, int? page)
        {
            if (searchByName != null)
            {
                page = 1;
            }
            else
            {
                searchByName = currentFilter;
            }

            var efmvcUser = HttpContext.User.GetEFMVCUser();
            var user = _userRepository.GetById(efmvcUser.UserId);

            SetCollectionForFilter(user);

            ViewBag.CurrentSort = sortOrder;
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "NameDesc" : "";
            ViewBag.DescriptionSortParm = sortOrder == "Description" ? "DescriptionDesc" : "Description";
            ViewBag.UserSortParm = sortOrder == "User" ? "UserDesc" : "User";
            ViewBag.PriceSortParm = sortOrder == "Price" ? "PriceDesc" : "Price";
            ViewBag.CategorySortParm = sortOrder == "Category" ? "CategoryDesc" : "Category";
            ViewBag.BrandSortParm = sortOrder == "Brand" ? "BrandDesc" : "Brand";

            ViewBag.CurrentFilter = searchByName;
            ViewBag.DescriptionFilter = searchByDescription;
            ViewBag.UserParam = searchByUser;
            ViewBag.BrandParam = searchByBrand;
            ViewBag.CategoryParm = searchByCategory;

            int pageIndex = 1;
            pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;
            
            // filter
            IList<Product> products = _productRepository.GetMany(b => b.CompanyId == user.CompanyId).ToList();
            if (!String.IsNullOrEmpty(searchByName))
            {
                products = products.Where(b => b.Name.ToUpper().Contains(searchByName.ToUpper())).ToList();
            }

            if (!String.IsNullOrEmpty(searchByDescription))
            {
                products = products.Where(b => b.Description.ToUpper().Contains(searchByDescription.ToUpper())).ToList();
            }

            if (!string.IsNullOrEmpty(searchByUser))
            {
                products = products.Where(x => x.User.DisplayName == searchByUser).ToList();
            }

            if (!string.IsNullOrEmpty(searchByBrand))
            {
                products = products.Where(x => x.Brand.Name == searchByBrand).ToList();
            }

            if (!string.IsNullOrEmpty(searchByCategory))
            {
                products = products.Where(x => x.Category.Name == searchByCategory).ToList();
            }
            // Sort
            IPagedList<Product> productsToReturn = null;
            switch (sortOrder)
            {
                case "NameDesc":
                    productsToReturn = products.OrderByDescending(b => b.Name).ToPagedList(pageIndex, PageSize);
                    break;
                case "User":
                    productsToReturn = products.OrderBy(b => b.User.DisplayName).ToPagedList(pageIndex, PageSize);
                    break;
                case "UserDesc":
                    productsToReturn = products.OrderByDescending(b => b.User.DisplayName).ToPagedList(pageIndex, PageSize);
                    break;
                case "Description":
                    productsToReturn = products.OrderBy(b => b.Description).ToPagedList(pageIndex, PageSize);
                    break;
                case "DescriptionDesc":
                    productsToReturn = products.OrderByDescending(b => b.Description).ToPagedList(pageIndex, PageSize);
                    break;
                case "Price":
                    productsToReturn = products.OrderBy(b => b.Price).ToPagedList(pageIndex, PageSize);
                    break;
                case "PriceDesc":
                    productsToReturn = products.OrderByDescending(b => b.Price).ToPagedList(pageIndex, PageSize);
                    break;
                case "Brand":
                    productsToReturn = products.OrderBy(b => b.Brand.Name).ToPagedList(pageIndex, PageSize);
                    break;
                case "BrandDesc":
                    productsToReturn = products.OrderByDescending(b => b.Brand.Name).ToPagedList(pageIndex, PageSize);
                    break;
                case "Category":
                    productsToReturn = products.OrderBy(c => c.Category.Name).ToPagedList(pageIndex, PageSize);
                    break;
                case "CategoryDesc":
                    productsToReturn = products.OrderByDescending(c => c.Category.Name).ToPagedList(pageIndex, PageSize);
                    break;
                default:  // Name ascending 
                    productsToReturn = products.OrderBy(b => b.Name).ToPagedList(pageIndex, PageSize);
                    break;
            }

            return View(productsToReturn);
        }

        private void SetCollectionForFilter(User user)
        {
            var users = new List<string>();
            var usersQuery = from d in _userRepository.GetMany(b => b.CompanyId == user.CompanyId)
                             orderby d.DisplayName
                             select d.DisplayName;
            users.AddRange(usersQuery.Distinct());
            ViewBag.SearchByUser = new SelectList(users);

            var brands = new List<string>();
            var brandsQuery = from brand in _brandRepository.GetMany(b => b.CompanyId == user.CompanyId)
                              orderby brand.Name
                              select brand.Name;
            brands.AddRange(brandsQuery.Distinct());
            ViewBag.SearchByBrand = new SelectList(brands);

            var categories = new List<string>();
            var categoriesQuery = from category in _categoryRepository.GetMany(b => b.CompanyId == user.CompanyId)
                                  orderby category.Name
                                  select category.Name;
            categories.AddRange(categoriesQuery.Distinct());
            ViewBag.SearchByCategory = new SelectList(categories);
        }

The View – Index:

@model IEnumerable<BackOffice.Model.Entities.Product>
@{
    ViewBag.Title = "Products";
}

<h2>Products</h2>
<div id="divProductList">
    @Html.Partial("_ProductList",Model)
</div>

The partial view: _ProductsList

@using EFMVC.Web.Core.Extensions
@using PagedList.Mvc
@model PagedList.IPagedList<BackOffice.Model.Entities.Product>
<script type="text/javascript">
    $(document).ready(function () {
        //for table row
        $("tr:even").css("background-color", "#A8A8A8");
        $("tr:odd").css("background-color", "#FFFFFF");

    });
</script>
@{
     var user = HttpContext.Current.User.GetEFMVCUser();
}

<p>
    @Html.ActionLink("Create new product","Create")
</p>
<div>
@using (Html.BeginForm("Index", "Products", FormMethod.Get))
{
    <p>
        <b>Filter by:</b><br/> 
        <b>Name</b> @Html.TextBox("SearchByName", ViewBag.CurrentFilter as string) 
        <b>Description</b> @Html.TextBox("SearchByDescription", ViewBag.DescriptionFilter as string)
        <br/>
        <b>Category</b>
          @Html.DropDownList("SearchByCategory", "All categories")
         <b>Brand</b>
          @Html.DropDownList("SearchByBrand", "All brands")
        @if (user.RoleName == EFMVC.Web.Core.Models.Roles.Admin)
         {   
             <b>User</b>
             @Html.DropDownList("SearchByUser", "All users")
         }
        <input type="submit" value="Search" />
    </p>
} 
</div>
@if(Model.Count>0)
{
        <table>
            <tr>
                 <th style="width:100px">
                     @Html.ActionLink("Name", "Index", new { sortOrder = ViewBag.NameSortParm, 
                                                            currentFilter=ViewBag.CurrentFilter,
                                                            searchByDescription = ViewBag.DescriptionFilter,
                                                            searchByUser=ViewBag.UserParam,
                                                            searchByBrand=ViewBag.BrandParam, 
                                                            searchByCategory = ViewBag.CategoryParam})
                 </th>
                <th style="width:150px">@Html.ActionLink("Description", "Index", new { 
                                                            sortOrder = ViewBag.DescriptionSortParm, 
                                                            currentFilter=ViewBag.CurrentFilter,
                                                            searchByDescription = ViewBag.DescriptionFilter,
                                                            searchByUser=ViewBag.UserParam,
                                                            searchByBrand=ViewBag.BrandParam, 
                                                            searchByCategory = ViewBag.CategoryParam})</th>
                <th style="width:100px">@Html.ActionLink("Category", "Index", new { 
                                                            sortOrder = ViewBag.CategorySortParm, 
                                                            currentFilter=ViewBag.CurrentFilter,
                                                            searchByDescription = ViewBag.DescriptionFilter,
                                                            searchByUser=ViewBag.UserParam,
                                                            searchByBrand=ViewBag.BrandParam, 
                                                            searchByCategory = ViewBag.CategoryParam})</th>
                <th style="width:100px">@Html.ActionLink("Brand", "Index", new { 
                                                            sortOrder = ViewBag.BrandSortParm, 
                                                            currentFilter=ViewBag.CurrentFilter,
                                                            searchByDescription = ViewBag.DescriptionFilter,
                                                            searchByUser=ViewBag.UserParam,
                                                            searchByBrand=ViewBag.BrandParam, 
                                                            searchByCategory = ViewBag.CategoryParam})</th>
                <th style="width:100px">@Html.ActionLink("Price", "Index", new { 
                                                            sortOrder = ViewBag.PriceSortParm, 
                                                            currentFilter=ViewBag.CurrentFilter,
                                                            searchByDescription = ViewBag.DescriptionFilter,
                                                            searchByUser=ViewBag.UserParam,
                                                            searchByBrand=ViewBag.BrandParam, 
                                                            searchByCategory = ViewBag.CategoryParam})</th>
                <th>Link</th>
                <th>Images</th>
                @if (user.RoleName == EFMVC.Web.Core.Models.Roles.Admin)
                {
                     <th style="width:100px">
                     @Html.ActionLink("User", "Index", new { sortOrder = ViewBag.UserSortParm, 
                                                            currentFilter=ViewBag.CurrentFilter,
                                                            searchByDescription = ViewBag.DescriptionFilter,
                                                            searchByUser=ViewBag.UserParam,
                                                            searchByBrand=ViewBag.BrandParam, 
                                                            searchByCategory = ViewBag.CategoryParam})
                 </th>
                }
                <th style="width:120px"></th>
            </tr>
            @foreach (var item in Model)
            {
                <tr>
                    <td>
                        @item.Name
                    </td>
                    <td>
                        @item.ShortDescription
                    </td> 
                    <td>
                      <a href="@Url.Content("/Categories/Details/" + @item.Category.Id)" target="_blank">@item.Category.Name</a>
                    </td> 
                    <td>
                      <a href="@Url.Content("/Brands/Details/" + @item.Brand.Id)" target="_blank">@item.Brand.Name</a>
                    </td> 
                    <td>
                        @item.PriceToString
                    </td>  
                    <td>
                       <a href="@item.Link" target="_blank">link</a> 
                    </td>  
                    <td>
                        <img width="100" src='@Url.Action("getimage/" + @item.Id+"/0", "Products")' />
                        <img width="100" src='@Url.Action("getimage/" + @item.Id+"/1", "Products")' />
                        <img width="100" src='@Url.Action("getimage/" + @item.Id+"/2", "Products")' />
                    </td>
                     @if (user.RoleName == EFMVC.Web.Core.Models.Roles.Admin)
                     {
                     <td>@item.User.DisplayName</td>
                     }
                    <td>
                        @Html.ActionLink("Edit", "Edit", new {id = item.Id})
                        @Html.ActionLink("Details", "Details", new {id = item.Id})
                        @Ajax.ActionLink("Delete", "Delete", new {id = item.Id},
                            new AjaxOptions
                            {
                                Confirm = "Would you like to delete the selected product?", HttpMethod = "Post",
                                UpdateTargetId = "divProductList"
                            })  
                    </td>
                </tr>
            }
        </table>

        <br />
        <div id='Paging' style="text-align: center">
            Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
            of @Model.PageCount

            @Html.PagedListPager(Model, page => Url.Action("Index", new {page, 
                                                               sortOrder = ViewBag.CurrentSort, 
                                                               currentFilter = ViewBag.CurrentFilter,
                                                               searchByDescription = ViewBag.DescriptionFilter,
                                                               searchByUser=ViewBag.UserParam,
                                                               searchByBrand=ViewBag.BrandParam, 
                                                               searchByCategory = ViewBag.CategoryParam}))
        </div>
    }
else
{
    if (string.IsNullOrEmpty(ViewBag.CurrentFilter) && 
        string.IsNullOrEmpty(ViewBag.BrandParam) &&
        string.IsNullOrEmpty(ViewBag.CategoryParam &&
        string.IsNullOrEmpty(ViewBag.DescriptionFilter)))
    {
         <p>There aren´t any product created.</p>
    }
    else
    {
        <p>There aren´t any product for the selected search.</p>
    }
}

 

Result:

 products

 

[C#] How to encrypt password to store in database

To store a password in database is good pratice to encrypt it.

Here is one solution for it:

 

public static string EncryptPassword(string data)
        {
            string EncryptionKey = "MAKV2SPBNI99212";
            byte[] clearBytes = Encoding.Unicode.GetBytes(data);
            using (Aes encryptor = Aes.Create())
            {
                Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
                encryptor.Key = pdb.GetBytes(32);
                encryptor.IV = pdb.GetBytes(16);
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(clearBytes, 0, clearBytes.Length);
                        cs.Close();
                    }
                    data = Convert.ToBase64String(ms.ToArray());
                }
            }
            return data;
        }

1º Hackathon da Comunidade NetPonto

Olá,

Estamos radiantes por te trazer mais um evento magnifico da Comunidade NetPonto!!!

No ambito do lançamento do www.DVLUP.com para Portugal, dia 1 de Fevereiro de 2014 vamos realizar o1º Hackathon da Comunidade NetPonto, que se irá realizar nas instalações da Microsoft no Parque das Nações.

Será um evento de 8 horas onde poderás desenhar, desenvolver e apresentar as tuas aplicações  de Windows Phone e sujeitares-te a ter de ganhar alguns dos fantásticos prémios que temos para ti. E se estás preocupado com o facto de não teres dispositivos para testar as aplicações, não te preocupes. Vais poder testar a tua aplicação em dispositivos topo de gama. Sim, vamos ter no evento um leque Windows Phone da Nokia para testares as apps.

Como sabemos que as 8 horas são curtas para fazer algo, estamos desde já a abrir as inscrições para que possas começar a formar a tua equipa, e a criar a tua aplicação original para quando chegares ao dia do evento possas dar os ultimos toque, melhorar a app, e finalmente apresentar a mesma ao juri.

Vamos oferecer 3 Windows Phone da Nokia, um a cada uma das 3 equipas vencedoras, e todos os seus membros vão receber pontos e XP para terem um arranque em força no www.DVLUP.com.

Mas não vamos ficar por aqui. Todos os que se inscreverem no evento, e estejam lá no dia 1 de Fevereiro, recebem automaticamente e sem sorteio ou qualquer outro requisito, 150 XP e ainda poderão vir a participar em iniciativas especialmente criadas para Portugal.

Portanto começa por ler já os regulamentos , requisitos e recursos do evento, para que nada te passe ao lado e depois inscreve-te individualmente aqui e por fim diz-nos qual é a tua equipa, descreve a tua app neste formulário.

Começa já a dar aos cordelinhos!!! :)

Boa sorte!

A Comunidade NetPonto

Registo

Para participar, basta efectuar a inscrição através do site:
http://netponto-hackathon-fevereiro-2014.eventbrite.co.uk

A entrada é gratuita.


Mais Comunidade NetPonto: