protected void Page_Load(object sender, EventArgs e)
        {
            updateInformationOnMasterPage(Resources.Label.new_city, "fa fa-globe", "menu_manage_cities");

            if (!IsPostBack)
            {
                loadStates();
                loadEntities();

                //Carrega o município se necessário
                if (!String.IsNullOrWhiteSpace(Page.Request.QueryString["id"]))
                {
                    try
                    {
                        hdCityId.Value = Page.Request.QueryString["id"];
                        long cityId = Convert.ToInt64(Commons.SecurityUtils.descriptografar(hdCityId.Value));

                        using (Lib.Repositories.StateCityRepository rep = new Lib.Repositories.StateCityRepository(ActiveUser))
                        {
                            var city = rep.getCityInstanceById(cityId);

                            AcceptedUsersTypeInPage.Add(Lib.Enumerations.UserType.Master);
                            if (city != null)
                            {
                                txtCityName.Text = city.Name;
                                ddlState.SelectedValue = city.StateId;

                                loadPeriodInformation(city);

                            }
                        }

                    }
                    catch (Exception ex)
                    {
                        Lib.Log.ErrorLog.saveError("Ferramenta.City.NewCity.Page_Load", ex);
                        phMessageError.Visible = false;
                        lblMessageError.Text = Resources.Message.problem_to_load_requested_user;
                    }

                }
                else
                {
                    loadPeriodInformation(null);
                }
            }
        }
 private void loadStates()
 {
     using (Lib.Repositories.StateCityRepository cont = new Lib.Repositories.StateCityRepository(this.ActiveUser))
     {
         ddlState.DataSource = cont.getAllStates();
         ddlState.DataBind();
     }
 }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            phMessageError.Visible = false;
            phMessageSuccess.Visible = false;
            lblMessageError.Text = String.Empty;
            lblMessageSuccess.Text = String.Empty;

            if (String.IsNullOrWhiteSpace(txtCityName.Text))
            {
                phMessageError.Visible = true;
                lblMessageError.Text = Resources.Message.city_name_is_mandatory;
                return;
            }

            string mimeType = string.Empty;

            long cityId = !String.IsNullOrWhiteSpace(hdCityId.Value) ? Convert.ToInt64(Commons.SecurityUtils.descriptografar(hdCityId.Value)) : 0;

            using (Lib.Repositories.StateCityRepository repository = new Lib.Repositories.StateCityRepository(ActiveUser))
            {
                Lib.Entities.City city = null;

                if (cityId > 0)
                {
                    //Carrega o cidade existente
                    city = repository.getCityInstanceById(cityId);
                }
                else
                {
                    //Nova cidade
                    city = new Lib.Entities.City();
                }

                city.Name = txtCityName.Text;
                city.StateId = ddlState.SelectedValue;

                repository.saveCity(city);

                if (repository.HasErrors)
                {
                    phMessageError.Visible = true;
                    lblMessageError.Text = String.Join(",", repository.Errors);
                }
                else
                {
                    //Adiciona o responsável
                    if (!String.IsNullOrWhiteSpace(ddlResponsable.SelectedValue))
                    {
                        addResponsable(long.Parse(ddlResponsable.SelectedValue), city.Id);
                    }
                    else
                    {
                        removeResponsable(city.Id);
                    }

                    //Separa os colaboradores adicionados e os removidos
                    updateCollaborators(city.Id);

                    Response.Redirect("~/City/ManageCities.aspx");
                }
            }
        }
        public override void ProcessRequest(HttpContext context)
        {
            try
            {
                if (!userAuthenticate())
                {
                    throw new Exception(Resources.Message.user_not_allowed);
                }
                if (!String.IsNullOrWhiteSpace(context.Request.Form["state"]) && !String.IsNullOrWhiteSpace(context.Request.Form["period"]))
                {
                    var state = context.Request.Form["state"].ToString();
                    var period = context.Request.Form["period"].ToString();

                    long periodId = 0;

                    long.TryParse(Commons.SecurityUtils.descriptografar(period), out periodId);

                    if (periodId > 0)
                    {

                        List<Lib.Entities.City> cities = null;
                        JavaScriptSerializer serializer = new JavaScriptSerializer();

                        using (Lib.Repositories.StateCityRepository rep = new Lib.Repositories.StateCityRepository(this.ActiveUser))
                        {

                            cities = rep.getCitiesByUF(state, periodId);
                        }

                        if (cities != null)
                        {
                            var result = cities.Select(city => new
                            {
                                Id = Commons.SecurityUtils.criptografar(city.Id.ToString()),
                                Name = city.Name,
                                StateName = city.State.Name,
                                ResponsableName = city.Groups.Count == 1 ? city.Groups[0].Responsable != null ? city.Groups[0].Responsable.Name :"" : "",
                                TotalCollaborators = city.Groups.Count == 1 ? city.Groups[0].Collaborators.Count : 0
                            }).ToList();

                            context.Response.ContentType = "application/json";
                            context.Response.Write(serializer.Serialize(result));
                        }
                    }
                    else
                    {
                        context.Response.ContentType = "application/json";
                        context.Response.Write("[]");
                    }
                }
                else
                {
                    context.Response.ContentType = "application/json";
                    context.Response.Write("[]");
                }

            }
            catch (Exception ex)
            {
                Lib.Log.ErrorLog.saveError("Web.Handler.GroupCities.GetAll.ProcessRequest", ex);
                context.Response.StatusCode = 500;
                context.Response.Write(String.Format(Resources.Message.unknow_error, ex.Message));
            }
        }
        private void loadStates()
        {
            using (Lib.Repositories.StateCityRepository repository = new Lib.Repositories.StateCityRepository(this.ActiveUser))
            {
                //ddlState
                foreach (var state in repository.getAllStates())
                {
                    ddlState.Items.Add(new ListItem(state.Name, state.Id.ToString()));
                }

                var cities = repository.getCitiesByUF(ddlState.SelectedValue);

                hdnCityId.Value = cities[0].Id.ToString();

                foreach (var city in cities)
                {
                    ddlCities.Items.Add(new ListItem(city.Name, city.Id.ToString()));
                }
            }
        }
        private void loadStates()
        {
            using (Lib.Repositories.StateCityRepository rep = new Lib.Repositories.StateCityRepository(this.ActiveUser))
            {
                var states = rep.getAllStates();

                if (states != null && states.Count > 0)
                {
                    foreach (var state in states.OrderBy(f => f.Name).ToList())
                    {
                        ddlState.Items.Add(new ListItem(state.Name, state.Id));
                    }

                    foreach (var city in states.Where(f => f.Id == ddlState.SelectedValue).FirstOrDefault().Cities.OrderBy(f => f.Name))
                    {
                        ddlCities.Items.Add(new ListItem(city.Name, city.Id.ToString()));
                    }

                    hdnCityId.Value = ddlCities.SelectedValue;
                }
            }
        }