private void BuildInterface()
        {
            View.BackgroundColor = new UIImage("Images/fondoPrincipal.jpg").GetScaledImageBackground(View);

            var header = new Header(View.Frame.Width)
            {
                LocationTitle   = _assignmentVm.SelectedAssignment.CompanyName,
                LeftButtonImage = "Images/btn-atras.png",
                ButtonTouch     = async(sender, args) =>
                {
                    if (_assignmentVm.SelectedActivity.ActivityType == Enumerations.ActivityType.None)
                    {
                        _assignmentVm.SelectedAssignment.Activities.Remove(_assignmentVm.SelectedActivity);
                    }
                    else
                    {
                        if (_assignmentVm.SelectedActivity.IsRecording)
                        {
                            await _assignmentVm.StopAsync(willContinue : true);

                            _assignmentVm.SelectedActivity.IsRecording = true;
                        }
                        _assignmentVm.SelectedActivity.Traces.Add(new Trace
                        {
                            ActivityId    = _assignmentVm.SelectedActivity.Id,
                            ActivityState = _assignmentVm.SelectedActivity.State,
                            TraceDate     = DateTime.Now,
                            Longitude     = (decimal)_longitude,
                            Latitude      = (decimal)_latitude
                        });
                        await _assignmentVm.SaveActivityAsync();
                    }
                    _navigationService.GoBack();
                }
            };

            var principalData = new AssignmentDataView(View.Frame)
            {
                Frame = new CGRect(0, header.Frame.Y + header.Frame.Height, View.Frame.Width, 65)
            };

            _activityType = new ActivityFill
            {
                Title           = "Tipo de Actividad",
                BackgroundColor = UIColor.Clear,
                Frame           = new CGRect(10, principalData.Frame.Y + principalData.Frame.Height, View.Frame.Width, 40),
                Hit             = TouchActivityTypeButton
            };

            _description = new ActivityFill
            {
                Title           = "Decripción",
                BackgroundColor = UIColor.Clear,
                Frame           = new CGRect(10, _activityType.Frame.Y + _activityType.Frame.Height, View.Frame.Width - 20, 40),
                Hit             = TouchButtonDescription
            };

            _startDate = new ActivityDate
            {
                Title = "Fecha de Inicio",
                Frame = new CGRect(10, _description.Frame.Y + _description.Frame.Height, View.Frame.Width, 40)
            };

            _endDate = new ActivityDate
            {
                Title = "Fecha de Inicio",
                Frame = new CGRect(10, _startDate.Frame.Y + _startDate.Frame.Height, View.Frame.Width, 40)
            };

            _description.NewTitle = string.IsNullOrEmpty(_assignmentVm.SelectedActivity.Description)
                ? "+"
                : _assignmentVm.SelectedActivity.Description;
            _activityType.NewTitle = GetTypeName(_assignmentVm.SelectedActivity.ActivityType);
            _startDate.Date        = (_assignmentVm.SelectedActivity.StartDate != DateTime.MinValue)
                ? _assignmentVm.SelectedActivity.StartDate.ToString("dd/MM/yyyy hh:mm")
                : string.Empty;
            _endDate.Date = (_assignmentVm.SelectedActivity.EndDate != DateTime.MinValue)
                ? _assignmentVm.SelectedAssignment.EndDate.ToString("dd/MM/yyyy hh:mm")
                : string.Empty;

            if (_assignmentVm.SelectedActivity.IsRecording)
            {
                var elapsed = DateTime.Now - _assignmentVm.SelectedActivity.StartDate;
                _assignmentVm.SelectedActivity.Duration = _assignmentVm.SelectedActivity.Duration.Add(elapsed);
                _assignmentVm.RecordAsync();
            }

            _timerView = new UIView
            {
                Frame = new CGRect(View.Frame.Width / 2 - 70, _endDate.Frame.Y + _endDate.Frame.Height + 10, 160, 160)
            };

            _timespan = new UILabel
            {
                Frame     = new CGRect(0, 0, 160, 60),
                Font      = UIFont.FromName("Helvetica-Bold", 35),
                TextColor = UIColor.White,
                Text      = _assignmentVm.SelectedActivity.Duration.ToString(@"hh\:mm\:ss")
            };

            var timerButton = UIButton.FromType(UIButtonType.Custom);

            timerButton.Frame = new CGRect(View.Frame.Width / 2 - 120, _timespan.Frame.Height + 5, 70, 70);
            timerButton.SetImage(
                _assignmentVm.SelectedActivity.IsRecording
                        ? new UIImage("Images/btn-stop.png")
                        : new UIImage("Images/btn-play.png"), UIControlState.Normal);

            timerButton.Enabled        = _assignmentVm.SelectedAssignment.Status != Enumerations.AssignmentStatus.Complete;
            timerButton.TouchUpInside += (sender, args) =>
            {
                if (_assignmentVm.ActiveActivity != null &&
                    _assignmentVm.SelectedActivity.Id != _assignmentVm.ActiveActivity.Id)
                {
                    new UIAlertView(title: "Ferreyros", message: Constants.Messages.ActivityNotFinished, del: null,
                                    cancelButtonTitle: "OK", otherButtons: null).Show();
                    return;
                }
                _activityType.UserInteractionEnabled = false;
                _description.UserInteractionEnabled  = false;

                timerButton.Enabled          = false;
                _assignmentVm.ActiveActivity = !_assignmentVm.SelectedActivity.IsRecording
                    ? _assignmentVm.SelectedActivity
                    : null;

                var task = _assignmentVm.SelectedActivity.IsRecording
                    ? _assignmentVm.StopAsync()
                    : _assignmentVm.RecordAsync();

                timerButton.SetImage(
                    _assignmentVm.SelectedActivity.IsRecording
                        ? new UIImage("Images/btn-stop.png")
                        : new UIImage("Images/btn-play.png"), UIControlState.Normal);

                task.ContinueWith(_ =>
                {
                    BeginInvokeOnMainThread(() =>
                    {
                        timerButton.Enabled = _assignmentVm.ActiveActivity != null;
                    });
                });
            };
            //_timerView.Hidden = _assignmentVm.SelectedActivity.ActivityType == Enumerations.ActivityType.None;
            _timerView.AddSubviews(timerButton, _timespan);

            var notifyClient = UIButton.FromType(UIButtonType.Custom);

            notifyClient.SetImage(new UIImage("Images/send-mail.png"), UIControlState.Normal);
            notifyClient.SetTitle("Notificar el fin del servicio al Cliente", UIControlState.Normal);
            notifyClient.BackgroundColor          = UIColor.Clear;
            notifyClient.TitleLabel.Font          = UIFont.FromName("Helvetica-Light", 13f);
            notifyClient.TitleLabel.TextAlignment = UITextAlignment.Left;
            notifyClient.TitleLabel.LineBreakMode = UILineBreakMode.WordWrap;
            notifyClient.TitleEdgeInsets          = new UIEdgeInsets(0, -60, 0, -150);
            notifyClient.Frame = new CGRect(40, _timerView.Frame.Y + _timerView.Frame.Height + 10, 80, 40);
            notifyClient.ImageView.ContentMode = UIViewContentMode.ScaleAspectFit;
            //notifyClient.Enabled = _assignmentVm.SelectedActivity.State != Enumerations.ActivityState.Completed;
            notifyClient.TouchUpInside += (sender, args) =>
            {
                if (_assignmentVm.SelectedActivity.IsRecording)
                {
                    new UIAlertView(title: "Ferreyros", message: Constants.Messages.ActivityNotFinished, del: null,
                                    cancelButtonTitle: "OK", otherButtons: null).Show();
                    return;
                }

                var okCancelAlertController = UIAlertController.Create("Cerrar Servicio",
                                                                       "¿Con esta actividad se ha completado el servicio?, se enviará un correo al cliente informando.",
                                                                       UIAlertControllerStyle.Alert);

                okCancelAlertController.AddAction(UIAlertAction.Create("Si", UIAlertActionStyle.Default, async alert =>
                {
                    _assignmentVm.SelectedActivity.State = Enumerations.ActivityState.Completed;
                    await _assignmentVm.SaveActivityAsync();
                    await _assignmentVm.SendActivityEndsAssignmentMailAsync();
                    notifyClient.Enabled = false;
                }));
                okCancelAlertController.AddAction(UIAlertAction.Create("No", UIAlertActionStyle.Cancel, alert => { }));

                PresentViewController(okCancelAlertController, true, null);
            };

            var copyRight = new UILabel
            {
                Text          = "2016 Ferreyros | Derechos Reservados",
                TextAlignment = UITextAlignment.Center,
                TextColor     = UIColor.White,
                Font          = UIFont.FromName("Helvetica-Light", 10f),
                Frame         = new CGRect(0, View.Frame.Height - 30, View.Frame.Width, 20)
            };

            View.AddSubviews(header, principalData, _activityType, _description, _startDate, _endDate, _timerView,
                             notifyClient, copyRight);
        }
        private async void BuildInterface()
        {
            View.BackgroundColor = new UIImage("Images/fondoPrincipal.jpg").GetScaledImageBackground(View);

            await _assignmentVm.LoadActivitiesByAssignmentAsync();

            var header = new Header(View.Frame.Width)
            {
                LocationTitle   = _assignmentVm.SelectedAssignment.CompanyName,
                LeftButtonImage = "Images/btn-atras.png",
                ButtonTouch     = async(sender, args) =>
                {
                    await _assignmentVm.SaveAssignmentAsync();

                    _navigationService.GoBack();
                }
            };

            var principalData = new AssignmentDataView(View.Frame)
            {
                Frame = new CGRect(0, header.Frame.Y + header.Frame.Height, View.Frame.Width, 65),
            };

            var seeAssignmentInfo = new TextImageButton
            {
                Frame   = new CGRect(50, principalData.Frame.Y + principalData.Frame.Height + 20, 70, 70),
                Image   = "Images/datos-servicio.png",
                Content = "DATOS DE SERVICIO"
            };

            seeAssignmentInfo.TouchUpInside += (sender, args) =>
            {
                var actionSheetAlert = UIAlertController.Create("Datos de Servicio", "Seleccione que datos desea ver",
                                                                UIAlertControllerStyle.ActionSheet);

                actionSheetAlert.AddAction(UIAlertAction.Create("DATOS DEL SERVICIO", UIAlertActionStyle.Default,
                                                                (action) =>
                {
                    _assignmentVm.SelectedServiceDataType = Enumerations.ServiceDataType.ServiceData;
                    _navigationService.NavigateTo(Constants.PageKeys.ServiceData);
                }));
                actionSheetAlert.AddAction(UIAlertAction.Create("DATOS DE LA MAQUINA", UIAlertActionStyle.Default,
                                                                (action) =>
                {
                    _assignmentVm.SelectedServiceDataType = Enumerations.ServiceDataType.MachineData;
                    _navigationService.NavigateTo(Constants.PageKeys.ServiceData);
                }));
                actionSheetAlert.AddAction(UIAlertAction.Create("CONTACTO TÉCNICO", UIAlertActionStyle.Default,
                                                                (action) =>
                {
                    _assignmentVm.SelectedServiceDataType = Enumerations.ServiceDataType.TechnicalContact;
                    _navigationService.NavigateTo(Constants.PageKeys.ServiceData);
                }));
                actionSheetAlert.AddAction(UIAlertAction.Create("EQUIPO FERREYROS", UIAlertActionStyle.Default,
                                                                (action) =>
                {
                    _assignmentVm.SelectedServiceDataType = Enumerations.ServiceDataType.FesaTeam;
                    _navigationService.NavigateTo(Constants.PageKeys.ServiceData);
                }));

                actionSheetAlert.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, (action) => { }));

                var presentationPopover = actionSheetAlert.PopoverPresentationController;
                if (presentationPopover != null)
                {
                    presentationPopover.SourceView = View;
                    presentationPopover.PermittedArrowDirections = UIPopoverArrowDirection.Up;
                }

                PresentViewController(actionSheetAlert, true, null);
            };

            var seeDocuments = new TextImageButton
            {
                Frame =
                    new CGRect(View.Frame.Width - 120, seeAssignmentInfo.Frame.Y, 70, 70),
                Image   = "Images/documentos.png",
                Content = "DOCUMENTOS"
            };

            seeDocuments.TouchUpInside += (sender, args) =>
            {
                _navigationService.NavigateTo(Constants.PageKeys.Documents);
            };

            var activityView = new UIView
            {
                Frame =
                    new CGRect(0, seeAssignmentInfo.Frame.Y + seeAssignmentInfo.Frame.Height + 30, View.Frame.Width,
                               View.Frame.Height - header.Frame.Height - principalData.Frame.Height -
                               (seeAssignmentInfo.Frame.Height + 10) - 100),
                BackgroundColor = UIColor.White
            };

            var activityLabel = new UILabel
            {
                Frame         = new CGRect(20, 10, 150, 30),
                Text          = "Reportar Actividades",
                TextAlignment = UITextAlignment.Center,
                Font          = UIFont.FromName("Helvetica-Bold", 15f),
                TextColor     = UIColor.Black
            };

            var addActivity = new TextImageButton
            {
                Frame = new CGRect(activityView.Frame.Width - 70, 10, 30, 30),
                Layer =
                {
                    CornerRadius    = 15,
                    BackgroundColor = UIColor.Green.CGColor
                },
                ClipsToBounds   = true,
                TintColor       = UIColor.White,
                Font            = UIFont.FromName("Helvetica-Bold", 30),
                TitleEdgeInsets = new UIEdgeInsets(-5, -1, 0, 0)
            };

            addActivity.SetTitle("+", UIControlState.Normal);

            _activityList = new UITableView
            {
                Frame =
                    new CGRect(0, addActivity.Frame.Y + addActivity.Frame.Height, activityView.Frame.Width,
                               activityView.Frame.Height - activityLabel.Frame.Height),
                Source          = new ActivityTableSource(),
                SeparatorColor  = UIColor.LightGray,
                BackgroundColor = UIColor.Clear,
                RowHeight       = 60,
                PagingEnabled   = true
            };

            addActivity.TouchUpInside += (sender, args) =>
            {
                if (_assignmentVm.ActiveActivity != null)
                {
                    new UIAlertView(title: "Ferreyros", message: Constants.Messages.ActivityNotFinished, del: null,
                                    cancelButtonTitle: "OK", otherButtons: null).Show();
                    return;
                }
                var activity = new Activity
                {
                    Id           = Guid.NewGuid().ToString(),
                    AssignmentId = _assignmentVm.SelectedAssignment.Id,
                    ActivityType = Enumerations.ActivityType.None,
                    State        = Enumerations.ActivityState.New,
                    Traces       = new List <Trace>()
                };

                if (_assignmentVm.SelectedAssignment.Activities == null)
                {
                    _assignmentVm.SelectedAssignment.Activities = new List <Activity>();
                }

                _assignmentVm.SelectedAssignment.Activities.Add(activity);
                _assignmentVm.SelectedActivity = activity;

                _activityList.ReloadData();
                _navigationService.NavigateTo(Constants.PageKeys.ActivityStart);
            };

            activityView.AddSubviews(activityLabel, addActivity, _activityList);

            var copyRight = new UILabel
            {
                Text          = "2016 Ferreyros | Derechos Reservados",
                TextAlignment = UITextAlignment.Center,
                TextColor     = UIColor.White,
                Font          = UIFont.FromName("Helvetica-Light", 10f),
                Frame         = new CGRect(0, View.Frame.Height - 30, View.Frame.Width, 20)
            };

            var closeService = new Button(UIButtonType.RoundedRect)
            {
                Content = "CERRAR SERVICIO",
                Frame   = new CGRect(0, copyRight.Frame.Y - 35, View.Frame.Width, 30),
                Layer   = { CornerRadius = 0 },
                Font    = UIFont.FromName("Helvetica-Bold", 15),
                Enabled = _assignmentVm.SelectedAssignment.Status != Enumerations.AssignmentStatus.Complete
            };

            closeService.TouchUpInside += (sender, args) =>
            {
                if (_assignmentVm.ActiveActivity != null)
                {
                    new UIAlertView(title: "Ferreyros", message: Constants.Messages.ActivityNotFinished, del: null,
                                    cancelButtonTitle: "OK", otherButtons: null).Show();
                    return;
                }

                var okCancelAlertController = UIAlertController.Create("Cerrar Servicio",
                                                                       "¿Está seguro que desea cerrar el servicio?, una vez cerrado no podrá editarlo.",
                                                                       UIAlertControllerStyle.Alert);

                okCancelAlertController.AddAction(UIAlertAction.Create("Si", UIAlertActionStyle.Default, async alert =>
                {
                    _assignmentVm.SelectedAssignment.EndDate = DateTime.Now;
                    _assignmentVm.ActiveAssignment           = null;
                    _assignmentVm.SelectedAssignment.Status  = Enumerations.AssignmentStatus.Complete;
                    await _assignmentVm.SaveAssignmentAsync();
                    addActivity.Enabled  = false;
                    closeService.Enabled = false;
                }));
                okCancelAlertController.AddAction(UIAlertAction.Create("No", UIAlertActionStyle.Cancel, alert => {}));

                PresentViewController(okCancelAlertController, true, null);
            };

            View.AddSubviews(header, principalData, seeAssignmentInfo, seeDocuments, activityView, closeService, copyRight);
        }