SMove

Scrum es una metodología de trabajo que se usa para resolver proyectos, especialmente proyectos de desarrollo de software, en este foro se resolveran dudas sobre SCRUM
User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

SMove

Post by JuanG0617 » Mon Jan 28, 2019 3:27 pm

Presentación del proyecto



https://www.slideshare.net/JuanPablo924/pitch-smove

Modelo Canvas
Image

Planeación semanal
Image
Last edited by JuanG0617 on Mon Feb 04, 2019 3:16 pm, edited 3 times in total.
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #1

Post by JuanG0617 » Tue Jan 29, 2019 7:09 am

Fecha inicio: 28-01-2019
Fecha finalización: 04-02-2019

¿Qué hice hasta hoy?
- Planteamiento de la idea de negocio del proyecto, modelo canvas y la lista de actividades. Se presentó la idea al grupo, junto con las diapositivas, el modelo canvas y la planeación semanal (3)
En el post anterior están la idea de negocio, el modelo canvas y la lista de actividades

- Crear repositorio en GitHub(1)
https://github.com/juang0617/SMove

- Observar si es más viable el comienzo de desarrollo de la app en ambiente Android o iOS (1)
Decidí hacerlo en un ambiente iOS, para esto utilizaré la herramienta Xamarin en Visual Studio 2017, por lo que instale las herramientas necesarias para realizar esto
Image

Comienzo de la app en la plataforma escogida (3)
Cree el proyecto junto a su solución, además lo vincule al repositorio y subí el primer commit
Image

Velocidad inicial: 8
Velocidad final: 8

¿Qué voy hacer?
Aprender más sobre Xamarin y como usarlo
Planear el Sprint #2

¿Que problemas se ha tenido?
Tengo que ver como obtener ingresos de una forma diferente.
Last edited by JuanG0617 on Mon Feb 18, 2019 4:11 pm, edited 1 time in total.
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #2

Post by JuanG0617 » Mon Feb 04, 2019 4:48 pm

Fecha inicio: 04-02-2019
Fecha finalización: 11-02-2019

¿Qué hice hasta hoy?
- Diseño de un prototipo gráfico de como va a ser la aplicación (Wireframes) (2)
Utilicé la herramienta Adobe Xd y un Kit de interfaces de usuario

Image
Image

El proyecto de Adobe Xd se encuentra en esta dirección:
https://upbeduco-my.sharepoint.com/:u:/ ... g?e=AlPVQt

- Asistí a un Meetup para aprender un poco más de desarrollo y métodos Array (1)

Image
Image
Image

- Ver tutoriales de Xamarin sobre como crear formularios y como realizar un "Hola mundo" (2)






Velocidad inicial: 5
Velocidad final: 5
¿Qué voy a hacer?

- Planear el Sprint #3
- Seguir aprendiendo sobre Xamarin

¿Qué problemas he tenido?

Hasta el momento ninguno. En este Sprint no hubo ningún problema
Last edited by JuanG0617 on Mon Feb 18, 2019 4:10 pm, edited 1 time in total.
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #3

Post by JuanG0617 » Mon Feb 11, 2019 3:55 pm

Sprint #3

Fecha Inicio: 11-02-2019
Fecha finalización: 18-02-2019

¿Qué hice hasta hoy?

- Desarrollar un "Hola Mundo" siguiendo los tutoriales de Youtube que miré en el post pasado. (2)

Realicé una aplicación simple donde hay un botón que al darle click se suma un contador y muestra el número del contador
Image

El código sería el siguiente:

MainPage.xaml

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:HolaMundo"
             x:Class="HolaMundo.MainPage">

    <StackLayout>
        <!-- Place new controls here -->
        <Label Text="Hola Mundo!" 
           HorizontalOptions="Center"
           VerticalOptions="CenterAndExpand" />
        <Label Text="Mi primera aplicación con Xamarin"
               HorizontalOptions="Center"
               VerticalOptions="CenterAndExpand"/>
        <Button Text="Haz click" x:Name="btnSumar"></Button>
    </StackLayout>

</ContentPage>
MainPage.xaml.cs

Code: Select all

namespace HolaMundo
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        int contador = 0;
        protected override void OnAppearing()
        {
            base.OnAppearing();
            btnSumar.Clicked += BtnSumar_Clicked;
        }

        private void BtnSumar_Clicked(object sender, EventArgs e)
        {
            contador++;
            btnSumar.Text = contador.ToString();
        }
    }
}
- Subir un vídeo de como va a ser la navegación de la app a partir del Wireframe que realicé. (1)

La navegación por la app será más o menos así:
Image

- Comenzar a desarrollar la aplicación, creación de los formularios de iniciar sesión, registro y bienvenida. (3)

Realicé el formulario de iniciar sesion

LoginPage.xaml

Code: Select all

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.LoginPage">
    <ContentPage.Content>
        <StackLayout
            Padding="10,20">
            <Label
                FontAttributes="Bold"
                FontSize="Large"
                HorizontalOptions="Center"
                Text="Iniciar Sesión"
                />
            <Entry
                Placeholder="Email"
                Keyboard="Email">
            </Entry>
            <Entry
                IsPassword="True"
                Placeholder="Contraseña">
            </Entry>
            <ActivityIndicator>
                
            </ActivityIndicator>
            <Label
                HorizontalOptions="CenterAndExpand"
                Text="Olvide mi contraseña"
                TextColor="#78849E">
            </Label>
            <Button
                BackgroundColor="#FFB900"
                BorderRadius="12"
                Text="Continuar">
            </Button>
          
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
Image

Velocidad esperada: 6
Velocidad final: 4

¿Qué voy a hacer?

- Planear el Sprint #4
- Terminar de realizar los formularios de registro y bienvenida

¿Qué problemas he tenido?

El Visual Studio no me dejaba compilar correctamente el código, ni tampoco emular la app ni en Android, ni en iPhone. Se solucionó desinstalando e instalando nuevamente el programa
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #4

Post by JuanG0617 » Mon Feb 18, 2019 3:57 pm

Fecha de inicio: 18-02-2019
Fecha de finalización: 25-02-2019

¿Qué hice hasta hoy?

- Realizar formularios registro, bienvenida y terminar el de inicio de sesión. (8)

Bienvenida
Image

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.EnterPage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             BackgroundImage="FondoEnter"
             Title="Bienvenido"
             NavigationPage.HasNavigationBar="False">
    <ContentPage.Content>
        <StackLayout
            VerticalOptions="End"
            BindingContext="{Binding Enter}">
            <Label
                HorizontalOptions="Center"
                VerticalOptions="EndAndExpand"
                FontSize="60"
                Text="Ingresa"
                TextColor="White"/>
            <Label
                HorizontalOptions="CenterAndExpand"
                VerticalOptions="End"
                FontSize="Large"
                Text="A una nueva forma de recorrer la ciudad"
                TextColor="White"/>
            <StackLayout
                VerticalOptions="EndAndExpand"
                Margin="20,50">
                <Button
                        BackgroundColor="#FFB900"
                        BorderRadius="12"
                        Command="{Binding RegisCommand}"
                        IsEnabled="{Binding IsEnabled, Mode=TwoWay}"
                        Text="Registrarse"
                        TextColor="White">
                </Button>
                <Button
                        BackgroundColor="#FFB900"
                        BorderRadius="12"
                        Command="{Binding LoginCommand}"
                        IsEnabled="{Binding IsEnabled, Mode=TwoWay}"
                        Text="Iniciar Sesión"
                        TextColor="White">
                </Button>

            </StackLayout>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
Registro
Image

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.RegisterPage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             BackgroundColor="White"
             NavigationPage.HasNavigationBar="False">
    <ContentPage.Content>
        <ScrollView
            BindingContext="{Binding Register}">
            <StackLayout
                Padding="10,20">

                <Grid
                    Padding="0,5">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="0"
                        HorizontalOptions="Center"
                        Text="Iniciar Sesión"
                        TextColor="Black"/>
                    <Image
                        WidthRequest="15"
                        Grid.Row="1"
                        Grid.Column="1"
                        Source="Degradado"></Image>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="1"
                        HorizontalOptions="Center"
                        Text="Registrarse"
                        TextColor="Black"/>
                </Grid>

                <StackLayout>
                    <Entry
                        BackgroundColor="Gray"
                        Placeholder="Email"
                        Keyboard="Email"
                        Text="{Binding Email, Mode=TwoWay}"
                        TextColor="#FFB900">
                    </Entry>
                    <Entry
                        BackgroundColor="Gray"
                        IsPassword="True"
                        Placeholder="Contraseña"
                        Text="{Binding Password, Mode=TwoWay}"
                        TextColor="#FFB900">
                    </Entry>
                    <Entry
                        BackgroundColor="Gray"
                        Placeholder="Nombre"
                        Text="{Binding Nombre, Mode=TwoWay}"
                        TextColor="#FFB900">
                    </Entry>
                    <Entry
                        BackgroundColor="Gray"
                        Placeholder="Apellidos"
                        Text="{Binding Apellidos, Mode=TwoWay}"
                        TextColor="#FFB900">
                    </Entry>
                    <Picker
                        BackgroundColor="Gray"
                        Title="Universidad"
                        TextColor="#FFB900">
                        <Picker.Items>
                            <x:String>Universidad Pontificia Bolivariana</x:String>
                            <x:String>EAFIT</x:String>
                            <x:String>Universidad de Antioquia</x:String>
                            <x:String>Universidad de Medellín</x:String>
                            <x:String>Universidad Nacional</x:String>
                        </Picker.Items>
                    </Picker>

                    <ActivityIndicator
                    IsRunning="{Binding IsRunning, Mode=TwoWay}">
                    </ActivityIndicator>
                    <StackLayout
                    Margin="15,0">
                        <Button
                        BackgroundColor="#FFB900"
                        BorderRadius="12"
                        Command="{Binding RegisterCommand}"
                        IsEnabled="{Binding IsEnabled, Mode=TwoWay}"
                        Text="Continuar"
                        TextColor="White">
                        </Button>
                    </StackLayout>
                    
                </StackLayout>

            </StackLayout>
        </ScrollView>
    </ContentPage.Content>
</ContentPage>
Iniciar Sesión
Image

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.LoginPage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             BackgroundColor="White"
             NavigationPage.HasNavigationBar="False">
    <ContentPage.Content>
        <ScrollView
            BindingContext="{Binding Login}">
            <StackLayout
                Padding="10,20">

                <Grid
                    Padding="0,5">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="0"
                        HorizontalOptions="Center"
                        Text="Iniciar Sesión"
                        TextColor="Black"/>
                    <Image
                        WidthRequest="15"
                        Grid.Row="1"
                        Grid.Column="0"
                        Source="Degradado"></Image>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="1"
                        HorizontalOptions="Center"
                        Text="Registrarse"
                        TextColor="Black"/>
                </Grid>
                
                <StackLayout>
                    <Entry
                        BackgroundColor="LightGray"
                        Placeholder="Email"
                        Keyboard="Email"
                        Text="{Binding Email, Mode=TwoWay}"
                        TextColor="DarkGray">
                    </Entry>
                    <Entry
                        BackgroundColor="LightGray"
                        IsPassword="True"
                        Placeholder="Contraseña"
                        Text="{Binding Password, Mode=TwoWay}"
                        TextColor="DarkGray">
                    </Entry>
                </StackLayout>
                <StackLayout
                    Orientation="Horizontal">
                    <Label
                        HorizontalOptions="StartAndExpand"
                        Text="Recordarme en este dispositivo"
                        TextColor="Black"
                        VerticalOptions="Center"/>
                    <Switch
                        OnColor="#FFB900"
                        IsToggled="{Binding IsRemembered, Mode=TwoWay}"
                        HorizontalOptions="End">
                    </Switch>
                </StackLayout>

                <StackLayout
                    Orientation="Horizontal"
                    HorizontalOptions="Center">
                    <Image Source="facebook_logo"
                        WidthRequest="50"></Image>
                    <Image Source="twitter_logo"
                        WidthRequest="50"></Image>
                </StackLayout>

                <Label
                    Margin="0,20"
                    HorizontalOptions="CenterAndExpand"
                    Text="Olvide mi contraseña"
                    TextColor="#78849E">
                </Label>
                <StackLayout
                    Margin="15,0">
                    <Button
                        BackgroundColor="#FFB900"
                        BorderRadius="12"
                        Command="{Binding LoginCommand}"
                        IsEnabled="{Binding IsEnabled, Mode=TwoWay}"
                        Text="Continuar"
                        TextColor="White">
                    </Button>
                </StackLayout>
                <ActivityIndicator
                    IsRunning="{Binding IsRunning, Mode=TwoWay}">
                </ActivityIndicator>

            </StackLayout>
            
        </ScrollView>


    </ContentPage.Content>
</ContentPage>
- Conectar las 3 vistas. (5)

Comencé a trabajar con un modelo MVVM, para así simplificar el trabajo y que quedara organizado, cree la MainViewModel para poder conectar las vistas.
Image

MainViewModel.cs

Code: Select all

namespace SMove.ViewModels
{
    public class MainViewModel
    {
        #region ViewModels
        public LoginViewModel Login {
            get;
            set;
        }

        public EnterViewModel Enter {
            get;
            set;
        }

        public RegisterViewModel Register
        {
            get;
            set;
        }
        #endregion

        #region Constructores
        public MainViewModel()
        {
            instance = this;
            this.Login = new LoginViewModel();
            this.Enter = new EnterViewModel();
            this.Register = new RegisterViewModel();
        }
        #endregion

        #region Singleton
        private static MainViewModel instance;

        public static MainViewModel GetInstance()
        {
            if (instance == null)
            {
                return new MainViewModel();
            }
            return instance;
        }
        #endregion
    }
}
LoginViewModel.cs

Code: Select all


namespace SMove.ViewModels
{
    using GalaSoft.MvvmLight.Command;
    using System;
    using System.ComponentModel;
    using System.Windows.Input;
    using Xamarin.Forms;
    using Views;

    public class LoginViewModel : BaseViewModel
    {


        #region Atributos
        private string email;
        private string password;
        private bool isRunning;
        private bool isEnabled;
        #endregion

        #region Propiedades
        public string Email
        {
            get { return this.email; }
            set { SetValue(ref this.email, value); }
        }
        public string Password
        {
            get { return this.password; }
            set { SetValue(ref this.password, value); }
        }

        public bool IsRunning
        {
            get { return this.isRunning; }
            set { SetValue(ref this.isRunning, value); }
        }
        public bool IsRemembered { get; set; }
        public bool IsEnabled
        {
            get { return this.isEnabled; }
            set { SetValue(ref this.isEnabled, value); }
        }
        #endregion

        #region Constructores
        public LoginViewModel()
        {
            this.IsRemembered = true;
            this.IsEnabled = true;
        }
        #endregion
        #region Comandos
        public ICommand LoginCommand
        {
            get
            {
                return new RelayCommand(Login);
            }
        }



        private async void Login()
        {
            if (string.IsNullOrEmpty(this.Email))
            {
                await Application.Current.MainPage.DisplayAlert("Error", "Debe ingresar un correo.", "Aceptar");
            }
            if (string.IsNullOrEmpty(this.Password))
            {
                await Application.Current.MainPage.DisplayAlert("Error", "Debe ingresar una contraseña.", "Aceptar");
            }

            this.IsRunning = true;
            this.IsEnabled = false;

            if (this.Email != "juan0617@hotmail.com" || this.Password != "1234")
            {
                this.IsRunning = false;
                this.IsEnabled = true;
                await Application.Current.MainPage.DisplayAlert("Error", "Correo o contraseñas incorrectos.", "Aceptar");
                this.Password = string.Empty;
            }

            this.IsRunning = false;
            this.IsEnabled = true;
            this.Email = string.Empty;
            this.Password = string.Empty;

            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new EnterPage());

        }
        #endregion
    }
}
EnterViewModel.cs

Code: Select all

namespace SMove.ViewModels
{
    using GalaSoft.MvvmLight.Command;
    using System;
    using System.ComponentModel;
    using System.Windows.Input;
    using Xamarin.Forms;
    using Views;

    public class EnterViewModel : BaseViewModel
    {
        #region Atributos
        private bool isEnabled;
        #endregion

        #region Propiedades
        public bool IsEnabled
        {
            get { return this.isEnabled; }
            set { SetValue(ref this.isEnabled, value); }
        }
        #endregion

        #region Constructores
        public EnterViewModel()
        {
            this.IsEnabled = true;
        }
        #endregion

        #region Comandos
        public ICommand LoginCommand
        {
            get
            {
                return new RelayCommand(EnterL);
            }
        }

        private async void EnterL()
        {
            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new LoginPage());
        }

        public ICommand RegisCommand
        {
            get
            {
                return new RelayCommand(EnterR);
            }
        }
        private async void EnterR()
        {
            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new RegisterPage());
        }
        #endregion
    }
}
RegisterViewModel.cs

Code: Select all

namespace SMove.ViewModels
{
    using GalaSoft.MvvmLight.Command;
    using System;
    using System.ComponentModel;
    using System.Windows.Input;
    using Xamarin.Forms;
    using Views;

    public class RegisterViewModel : BaseViewModel
    {
        #region Atributos
        private string email;
        private string password;
        private string nombre;
        private string apellidos;
        private bool isRunning;
        private bool isEnabled;
        #endregion

        #region Propiedades
        public string Email
        {
            get { return this.email; }
            set { SetValue(ref this.email, value); }
        }
        public string Password
        {
            get { return this.password; }
            set { SetValue(ref this.password, value); }
        }
        public string Nombre
        {
            get { return this.nombre; }
            set { SetValue(ref this.nombre, value); }
        }
        public string Apellidos
        {
            get { return this.apellidos; }
            set { SetValue(ref this.apellidos, value); }
        }
        public bool IsRunning
        {
            get { return this.isRunning; }
            set { SetValue(ref this.isRunning, value); }
        }
        public bool IsRemembered { get; set; }
        public bool IsEnabled
        {
            get { return this.isEnabled; }
            set { SetValue(ref this.isEnabled, value); }
        }
        #endregion

        #region Constructores
        public RegisterViewModel()
        {
            this.IsRemembered = true;
            this.IsEnabled = true;
        }
        #endregion
        #region Comandos
        public ICommand RegisterCommand
        {
            get
            {
                return new RelayCommand(Register);
            }
        }



        private async void Register()
        {
            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new EnterPage());
        }
        #endregion
    }
}
- Probar la aplicación en un iPhone, conseguir un Mac para poder compilar el código. (1)

Velocidad inicial: 14
Velocidad final: 13

¿Qué voy a hacer?
- Planear con anterioridad con mi amiga para que me preste el equipo Mac.
- Planear Sprint #5

¿Qué problema se ha tenido?
No pude concretar un horario con mi amiga para que me prestara su equipo Mac.
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #5

Post by JuanG0617 » Mon Feb 25, 2019 4:41 pm

Fecha de inicio: 25-02-2019
Fecha fin: 4-03-2019

Actividades
- Realizar formularios de main y perfil (8)
Condición de satisfacción: Tener el diseño básico de los formularios
- Mejorar los formularios de inicio de sesión y registro, conectar correctamente todos los formularios (4)
Condición de satisfacción: Poder ir a todos los formularios.
- Verificar si existe una conexión a internet. (1)
Condición de satisfacción: Instalar el NuGet.

Historias de usuario
  • Yo como: usuario
    Quiero que: se pueda registrar e iniciar sesión en la aplicación
    Condición de satisfacción: Tener la estructura de los formularios completa
  • Yo como: administrador
    Quiero que: se pueda verificar la conexión a internet
    Condición de satisfacción: Tener el NuGet instalado
¿Qué hice hasta hoy?

- Realicé el diseño básico de los formularios main y perfil

Main
Image

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.MainPage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             BackgroundColor="White"
             NavigationPage.HasNavigationBar="False">
    <ContentPage.Content>
        <StackLayout
            BindingContext="{Binding MainP}">
            <Frame
                BorderColor="#78849E"
                CornerRadius="20"
                HasShadow="True"
                Margin="5,10"
                Padding="5">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.125*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Image
                        Grid.Row="0"
                        Grid.Column="0"
                        Source="ic_launcher"
                        WidthRequest="50"/>
                    <Entry
                        Grid.Row="0"
                        Grid.Column="1"
                        Placeholder="¿A dónde te diriges?"
                        Text="{Binding Direccion, Mode=TwoWay}"
                        PlaceholderColor="#78849E">
                    </Entry>
                </Grid>
            </Frame>

            <Frame
                BackgroundColor="#2A2E43"
                CornerRadius="5"
                VerticalOptions="EndAndExpand"
                Padding="5">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="0.125*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Label
                        FontSize="18"
                        Grid.Column="1"
                        Grid.Row="0"
                        Text="Lugares desde Universidad"
                        TextColor="White"
                        Margin="5"/>
                    <Label
                        FontSize="15"
                        Grid.Column="1"
                        Grid.Row="0"
                        VerticalOptions="End"
                        Text="Lugares favoritos"
                        TextColor="#A1A3AC"
                        Margin="5,10,5,0"/>
                    <Image
                        Grid.Row="0"
                        Grid.Column="0"
                        VerticalOptions="End"
                        Source="arrow_up"
                        WidthRequest="50"/>
                </Grid>
            </Frame>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
Perfil
Image

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.ProfilePage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             BackgroundColor="White"
             NavigationPage.HasNavigationBar="False">
    <ContentPage.Content>
        <StackLayout
            BindingContext="{Binding Profile}">
            <Image
                Aspect="Fill"
                Source="Maria"
                WidthRequest="50"/>
            <Frame
                BackgroundColor="White"
                CornerRadius="10"
                HasShadow="True">
                <StackLayout
                    Margin="10">
                    <Label
                        FontSize="30"
                        Text="Maria Cano"
                        TextColor="#454F63"/>
                    <Label
                        FontSize="20"
                        Text="UPB"
                        TextColor="#78849E"
                        VerticalOptions="CenterAndExpand">
                    </Label>
                    <Label
                        FontSize="20"
                        Text="Envigado, ANT"
                        TextColor="#78849E"
                        VerticalOptions="CenterAndExpand">
                    </Label>
                </StackLayout>
            </Frame>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>
- Mejore los formularios de registro e inicio de sesión, ahora se puede cambiar del uno al otro

Iniciar sesión
Image

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.LoginPage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             BackgroundColor="White"
             NavigationPage.HasNavigationBar="False">
    <ContentPage.Content>
        <ScrollView
            BindingContext="{Binding Login}">
            <StackLayout
                Padding="10,20">

                <Grid
                    Padding="0,5">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="0"
                        HorizontalOptions="Center"
                        Text="Iniciar Sesión"
                        TextColor="Black"/>
                    <Image
                        WidthRequest="15"
                        Grid.Row="1"
                        Grid.Column="0"
                        Source="Degradado"></Image>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="1"
                        HorizontalOptions="Center"
                        Text="Registrarse"
                        TextColor="Black">
                        <Label.GestureRecognizers>
                            <TapGestureRecognizer Command="{Binding RegisterLCommand}"/>
                        </Label.GestureRecognizers>
                    </Label>
                </Grid>

                <Frame
                    BorderColor="#78849E"
                    CornerRadius="20"
                    HasShadow="True"
                    Padding="5"
                    Margin="5,10">
                    <Entry
                        Placeholder="Email"
                        Keyboard="Email"
                        Text="{Binding Email, Mode=TwoWay}"
                        PlaceholderColor="#78849E">
                    </Entry>
                </Frame>
                <Frame
                    BorderColor="#78849E"
                    CornerRadius="20"
                    HasShadow="True"
                    Padding="5"
                    Margin="5,10">
                    <Entry
                        IsPassword="True"
                        Placeholder="Contraseña"
                        PlaceholderColor="#78849E"
                        Text="{Binding Password, Mode=TwoWay}">
                    </Entry>
                </Frame>
                <StackLayout
                    Orientation="Horizontal">
                    <Label
                        HorizontalOptions="StartAndExpand"
                        Text="Recordarme en este dispositivo"
                        TextColor="Black"
                        VerticalOptions="Center"/>
                    <Switch
                        OnColor="#FFB900"
                        IsToggled="{Binding IsRemembered, Mode=TwoWay}"
                        HorizontalOptions="End">
                    </Switch>
                </StackLayout>

                <StackLayout
                    Orientation="Horizontal"
                    HorizontalOptions="Center">
                    <Image Source="facebook_logo"
                        WidthRequest="50"></Image>
                    <Image Source="twitter_logo"
                        WidthRequest="50"></Image>
                </StackLayout>

                <Label
                    Margin="0,20"
                    HorizontalOptions="CenterAndExpand"
                    Text="Olvide mi contraseña"
                    TextColor="#78849E">
                </Label>
                <StackLayout
                    Margin="15,0">
                    <Button
                        BackgroundColor="#FFB900"
                        BorderRadius="12"
                        Command="{Binding LoginCommand}"
                        IsEnabled="{Binding IsEnabled, Mode=TwoWay}"
                        Text="Continuar"
                        TextColor="White">
                    </Button>
                </StackLayout>
                <ActivityIndicator
                    IsRunning="{Binding IsRunning, Mode=TwoWay}">
                </ActivityIndicator>

            </StackLayout>
            
        </ScrollView>


    </ContentPage.Content>
</ContentPage>
Registrarse
Image

Code: Select all

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SMove.Views.RegisterPage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             BackgroundColor="White"
             NavigationPage.HasNavigationBar="False">
    <ContentPage.Content>
        <ScrollView
            BindingContext="{Binding Register}">
            <StackLayout
                Padding="10,20">

                <Grid
                    Padding="0,5">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="0"
                        HorizontalOptions="Center"
                        Text="Iniciar Sesión"
                        TextColor="Black">
                        <Label.GestureRecognizers>
                            <TapGestureRecognizer Command="{Binding LoginLCommand}"/>
                        </Label.GestureRecognizers>
                    </Label>
                    <Image
                        WidthRequest="15"
                        Grid.Row="1"
                        Grid.Column="1"
                        Source="Degradado"></Image>
                    <Label
                        FontSize="Large"
                        Grid.Row="0"
                        Grid.Column="1"
                        HorizontalOptions="Center"
                        Text="Registrarse"
                        TextColor="Black"/>
                </Grid>

                <StackLayout>
                    <Frame
                        BorderColor="#78849E"
                        CornerRadius="20"
                        HasShadow="True"
                        Padding="5"
                        Margin="5">
                        <Entry
                            PlaceholderColor="#78849E"
                            Placeholder="Email"
                            Keyboard="Email"
                            Text="{Binding Email, Mode=TwoWay}">
                        </Entry>
                    </Frame>
                    <Frame
                        BorderColor="#78849E"
                        CornerRadius="20"
                        HasShadow="True"
                        Padding="5"
                        Margin="5,10">
                        <Entry
                            IsPassword="True"
                            Placeholder="Contraseña"
                            PlaceholderColor="#78849E"
                            Text="{Binding Password, Mode=TwoWay}">
                        </Entry>
                    </Frame>
                    <Frame
                        BorderColor="#78849E"
                        CornerRadius="20"
                        HasShadow="True"
                        Padding="5"
                        Margin="5,10">
                        <Entry
                            Placeholder="Nombre"
                            PlaceholderColor="#78849E"
                            Text="{Binding Nombre, Mode=TwoWay}">
                        </Entry>
                    </Frame>
                    <Frame
                        BorderColor="#78849E"
                        CornerRadius="20"
                        HasShadow="True"
                        Padding="5"
                        Margin="5,10">
                        <Entry
                            Placeholder="Apellidos"
                            PlaceholderColor="#78849E"
                            Text="{Binding Apellidos, Mode=TwoWay}">
                        </Entry>
                    </Frame>
                    <Frame
                        BorderColor="#78849E"
                        CornerRadius="20"
                        HasShadow="True"
                        Padding="5"
                        Margin="5,10">
                        <Picker
                            Title="Universidad">
                            <Picker.Items>
                                <x:String>Universidad Pontificia Bolivariana</x:String>
                                <x:String>EAFIT</x:String>
                                <x:String>Universidad de Antioquia</x:String>
                                <x:String>Universidad de Medellín</x:String>
                                <x:String>Universidad Nacional</x:String>
                            </Picker.Items>
                        </Picker>
                    </Frame>

                    <ActivityIndicator
                    IsRunning="{Binding IsRunning, Mode=TwoWay}">
                    </ActivityIndicator>
                    <StackLayout
                    Margin="15,0">
                        <Button
                        BackgroundColor="#FFB900"
                        BorderRadius="12"
                        Command="{Binding RegisterCommand}"
                        IsEnabled="{Binding IsEnabled, Mode=TwoWay}"
                        Text="Continuar"
                        TextColor="White">
                        </Button>
                    </StackLayout>

                </StackLayout>

            </StackLayout>
        </ScrollView>
    </ContentPage.Content>
</ContentPage>
- Instalé el NuGet y coloqué que se verificara la conexión en el formulario de bienvenida

Code: Select all

namespace SMove.ViewModels
{
    using GalaSoft.MvvmLight.Command;
    using System;
    using System.ComponentModel;
    using System.Windows.Input;
    using Xamarin.Forms;
    using Views;
    using Models;
    using Services;

    public class EnterViewModel : BaseViewModel
    {
        #region Atributos
        private bool isEnabled;
        #endregion

        #region Propiedades
        public bool IsEnabled
        {
            get { return this.isEnabled; }
            set { SetValue(ref this.isEnabled, value); }
        }
        #endregion

        #region Constructores
        public EnterViewModel()
        {
            this.IsEnabled = true;
            this.LoadEnter();
            this.apiService = new ApiService();
        }
        #endregion

        #region Comandos
        public ICommand LoginCommand
        {
            get
            {
                return new RelayCommand(EnterL);
            }
        }

        private async void EnterL()
        {
            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new LoginPage());
        }

        public ICommand RegisCommand
        {
            get
            {
                return new RelayCommand(EnterR);
            }
        }
        private async void EnterR()
        {
            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new RegisterPage());
        }
        #endregion

        #region Servicios
        private ApiService apiService;
        #endregion

        #region Metodos

        private async void LoadEnter()
        {
            var connection = await this.apiService.CheckConnection();

            if (!connection.IsSuccess)
            {
                await Application.Current.MainPage.DisplayAlert(
                    "Error de conexión",
                    connection.Message,
                    "Aceptar");
                await Application.Current.MainPage.Navigation.PopAsync();
                return;
            }
        }
        #endregion
    }
}
Image

Velocidad inicial: 13
Velocidad final: 13

¿Qué voy a hacer?
- Mirar tutoriales de Xamarin para aprender a integrar servicios de mapas a la aplicación
- Planear Sprint #6

¿Qué problemas he tenido?
En este sprint no se tuvieron problemas.
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #6

Post by JuanG0617 » Mon Mar 04, 2019 4:58 pm

Fecha de inicio: 4-03-2019
Fecha fin: 11-03-2019

Actividades
- Conectar un servicio de mapas (5)
Condición de satisfacción: Visualizar el mapa en la aplicación
- Mejorar los formularios de main y perfil (4)
Condición de satisfacción: Hacerlos lo más parecido a los establecido en el Wireframe
- Diseñar la base datos (2)
Condición de satisfacción: Tener un diseño básico de la base

¿Qué hice hasta hoy?

- Diseñé la base de datos en Acces, pero utilizaré MySql para la implementación
Image

- Al intentar conectar el servicio de mapas con mi aplicación, tuve que actualizar varios paquetes, y esto trajo un problema con el método que verificaba la conexión a intenet, como solución temporal, y para proseguir con lo planeado en el sprint, decidí comentar esas lineas del código y buscar una solución luego
Image

Code: Select all

namespace SMove.ViewModels
{
    using GalaSoft.MvvmLight.Command;
    using System;
    using System.ComponentModel;
    using System.Windows.Input;
    using Xamarin.Forms;
    using Views;
    using Models;
    using Services;

    public class EnterViewModel : BaseViewModel
    {
        #region Atributos
        private bool isEnabled;
        #endregion

        #region Propiedades
        public bool IsEnabled
        {
            get { return this.isEnabled; }
            set { SetValue(ref this.isEnabled, value); }
        }
        #endregion

        #region Constructores
        public EnterViewModel()
        {
            this.IsEnabled = true;
            //this.LoadEnter();
            this.apiService = new ApiService();
        }
        #endregion

        #region Comandos
        public ICommand LoginCommand
        {
            get
            {
                return new RelayCommand(EnterL);
            }
        }

        private async void EnterL()
        {
            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new LoginPage());
        }

        public ICommand RegisCommand
        {
            get
            {
                return new RelayCommand(EnterR);
            }
        }
        private async void EnterR()
        {
            MainViewModel.GetInstance().Enter = new EnterViewModel();
            await Application.Current.MainPage.Navigation.PushAsync(new RegisterPage());
        }
        #endregion

        #region Servicios
        private ApiService apiService;
        #endregion

        #region Metodos

        //private async void LoadEnter()
        //{
        //    var connection = await this.apiService.CheckConnection();

        //    if (!connection.IsSuccess)
        //    {
        //        await Application.Current.MainPage.DisplayAlert(
        //            "Error de conexión",
        //            connection.Message,
        //            "Aceptar");
        //        await Application.Current.MainPage.Navigation.PopAsync();
        //        return;
        //    }
        //}
        #endregion
    }
}
Luego, comencé a implementar el servicio de mapas, cree el servicio de mapas en Google Cloud, y le puse las API para Android, iOS y una de direcciones
Image

Modifiqué los archivos necesarios para implementar los mapas, como es el AndroidManifest y el MainActivity para Android y AppDelegate y Info.plist para iOS

AndroidManifest.xml

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.SMove" android:installLocation="auto">
	<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="27" />
	<application android:label="SMove.Android">
		<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDokVvo12xu02IwDbKsC8na6Ay2cc10Las" />
	</application>
	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
	<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
	<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
	<uses-permission android:name="android.permission.INTERNET" />
</manifest>
MainActivity.cs

Code: Select all

using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace SMove.Droid
{
    [Activity(Label = "SMove", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            global::Xamarin.FormsMaps.Init(this, savedInstanceState);
            LoadApplication(new App());
        }
    }
}
AppDelegate.cs

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;

using Foundation;
using UIKit;

namespace SMove.iOS
{
    // The UIApplicationDelegate for the application. This class is responsible for launching the 
    // User Interface of the application, as well as listening (and optionally responding) to 
    // application events from iOS.
    [Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {
        //
        // This method is invoked when the application has loaded and is ready to run. In this 
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();
            global::Xamarin.FormsMaps.Init();
            LoadApplication(new App());

            return base.FinishedLaunching(app, options);
        }
    }
}
Al intentar ejecutar me salió el siguiente error
Image

Busqué una solución en google y la encontré en una de las páginas oficiales para Xamarin, al parecer luego de una actualización de Android se tenia que pedir permisos al usuario.

Luego, volví a ejecutar la aplicación y me encontré con un error de java.lang.securityexception: <timeout exceeded getting exception details>
Image

Intenté buscar una solución en internet pero ninguna de las que encontré me sirvió

¿Qué voy a hacer?
- Buscar ayuda para solucionar el error
- Planear Sprint #7

¿Qué problemas he tenido?
La aplicación no ejecuta correctamente luego de implementar el servicio de mapas, no se pudo avanzar gracias a esto.

Velocidad inicial: 11
Velocidad final: 2

Burndown chart:
Image
Last edited by JuanG0617 on Sun Mar 31, 2019 10:16 am, edited 3 times in total.
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #7

Post by JuanG0617 » Tue Mar 12, 2019 8:59 pm

Fecha de inicio: 11-03-2019
Fecha fin: 18-03-2019

Actividades
- Solucionar el problema con el mapa (5)
Condición de satisfacción: Poder visualizar el mapa en la aplicación
- Solucionar el problema de la verificación de conexión (5)
Condición de satisfacción: Se verifica si se tiene conexión a Internet
- Rediseñar la base datos (2)
Condición de satisfacción: Tener el diseño de la base de datos bien elaborado

¿Qué hice hasta hoy?

- Solucioné el problema de los mapas y cambié las imágenes de flecha arriba y menú
Image
Image

- Solucioné el error de conexión, ahora muestra un mensaje cuando no detecta conexión a internet.
Image

- Rediseñé la base de datos y la hice en SQL
Image

¿Qué voy a hacer?
- Planear Sprint 8
- Repasar conceptos de SQL

¿Qué problemas he tenido?
Afortunadamente, no tuve ningún problema durante este sprint

Velocidad inicial: 12
Velocidad final: 12

Burndown chart:
Image
Last edited by JuanG0617 on Sun Mar 31, 2019 10:15 am, edited 2 times in total.
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #8

Post by JuanG0617 » Mon Mar 18, 2019 9:05 pm

Fecha de inicio: 18-03-2019
Fecha fin: 25-03-2019

Actividades
- Corregir los burndown charts (1)
Condición de satisfacción: Tener bien hechos los Burndown charts

- Creación proyectos API y Backend (2)
Condición de satisfacción: Tener los proyectos integrados.

- Creación servicios en Azure y conexión a la base de datos (5)
Condición de satisfacción: Tener conectada la base de datos a la app.

¿Qué hice hasta hoy?

- Corregí los burndown charts y les puse las fechas respectivas

- Creé dentro de la solución los proyectos SMove.API y SMove.Backend, estos nos servirán para el manejo de la base de datos, y los servicios API que consumiremos
Image

- Cree un nuevo servicio en Azure para la base de datos y el servidor respectivo a esta, la conecté a mi proyecto de Xamarin en Visual Studio
Image
Image
Image
Web.config

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<!--
  Para obtener más información sobre cómo configurar la aplicación ASP.NET, visite
  https://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework"
      type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
      requirePermission="false"/>
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=smove.database.windows.net;Initial Catalog=Apolo;Persist Security Info=True;User=Juan;Password=Nomelase*"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0"/>
    <add key="webpages:Enabled" value="false"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
  <system.web>
    <authentication mode="None"/>
    <compilation debug="true" targetFramework="4.6.1"/>
    <httpRuntime targetFramework="4.6.1"/>
  </system.web>
  <system.webServer>
    <modules>
      <remove name="FormsAuthentication"/>
      <remove name="TelemetryCorrelationHttpModule"/>
      <add name="TelemetryCorrelationHttpModule"
        type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation"
        preCondition="integratedMode,managedHandler"/>
    </modules>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f"/>
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51"/>
        <bindingRedirect oldVersion="0.0.0.0-4.0.2.1" newVersion="4.0.2.1"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
        <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-5.2.4.0" newVersion="5.2.4.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
    </providers>
  </entityFramework>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>
</configuration>
¿Qué voy a hacer?

- Planear Sprint #9
- Ver si puedo conectar el proyecto a otro tipo de base de datos gratuita

¿Qué problemas he tenido?
No pude conectar el proyecto a una base de datos local, por lo que se optó a una en la nube

Velocidad inicial: 8
Velocidad final: 8

Burndown chart
Image
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

User avatar
JuanG0617
Posts: 14
Joined: Mon Jan 28, 2019 3:22 pm
Location: Medellín, Colombia

Sprint #9

Post by JuanG0617 » Wed Mar 27, 2019 8:58 am

Fecha de inicio: 25-03-2019
Fecha fin: 1-04-2019

Actividades

- Crear el menú lateral, conectar las páginas ya existentes al menú (8)
Historias de usuario: Yo como usuario registrado quiero navegar en un menú lateral, de esta forma interactuar con la aplicación
Condición de satisfacción: Poder sacar un menú lateral, que se pueda ir a las demás páginas de la aplicación

- Preparar la pre-entrega del proyecto (3).
Condición de satisfacción: Tener listo la exposición de la pre-entrega.

¿Qué hice hasta hoy?

- Creé el menú lateral, como anteriormente ya había creado la página del perfil hice que a partir del menú se pueda navegar a esta o a la página de inicio, también coloqué una opción para cerrar sesión.
Image
Image

- Realicé la presentación para la pre-entrega del proyecto


¿Qué voy a hacer?
- Ver si puedo cambiar SQL por Firebase.
- Planear Sprint #10.

¿Qué problemas he tenido?
No tuve ningún problema durante este sprint.

Velocidad inicial: 11
Velocidad final: 11

Burndown chart:
Image
Juan Pablo García Díez :D
Ing. Sistemas
5° Semestre

Post Reply