示例#1
0
        /// <summary>
        /// Generates a report of a specific site's information
        /// </summary>
        /// <param name="siteId">The site to generate a report of</param>
        /// <returns>Json value containing all information pertaining to specific site</returns>
        private JsonResult SiteInfo(int siteId)
        {
            using (var context = new Data.ApplicationDbContext()) {
                Models.Site dbSite = context.Sites.AsNoTracking().FirstOrDefault(s => s.SiteId == siteId);
                if (dbSite == null)
                {
                    return(Json(new { status_code = 1, status = "Site '" + siteId + "' does not exist." }));
                }

//#if LOCAL
//				using (MySqlConnection conn = new MySqlConnection(Startup.Configuration.GetConnectionString("LocalDatabase"))) {
//#else
//				using (MySqlConnection conn = new MySqlConnection(Startup.Configuration.GetConnectionString("Database"))) {
//#endif
//					conn.Open();
//					MySqlCommand cmd = new MySqlCommand("");
//					using (var reader = cmd.ExecuteReader()) {
//						while (reader.Read()) {
//						}
//					}
//				}

                Models.Activation activation = context.Activations.AsNoTracking().FirstOrDefault(a => a.SiteId == siteId);;
                Models.System     system     = context.Systems.AsNoTracking().FirstOrDefault(sys => sys.Id == dbSite.SystemId);

                return(Json(new { status_code = 0, site = dbSite, activation, system }));
            }
        }
示例#2
0
        public async Task <Response> Activate(Models.Activation model)
        {
            Rest     restService = new Rest();
            Response response    = await restService.PostAsync("CardActivations", model);

            return(response);
        }
        /// <summary>Gets a specific activation</summary>
        /// <param name="formId"></param>
        /// <returns></returns>
        private JsonResult GetActivation(int formId)
        {
            using (var context = new Data.ApplicationDbContext()) {
                // Verify user exists & has permission
                String      authUserId = User.GetClaim(OpenIdConnectConstants.Claims.Subject);
                Models.User authUser   = context.Users.AsNoTracking().FirstOrDefault(u => u.Id.ToString().Equals(authUserId));
                if (authUser == null)
                {
                    return(Json(new { status_code = 2, status = "User '" + authUserId + "' does not exist" }));
                }

                if (!Helpers.PermissionChecker.IsTechOrAdmin(authUser) && !Helpers.PermissionChecker.IsBillingDepartment(authUser))
                {
                    return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to view activations" }));
                }

                // Verify activation form exists, and if so, return form
                Models.Activation activation = context.Activations.AsNoTracking().FirstOrDefault(a => a.ActivationId == formId);
                if (activation == null)
                {
                    return(Json(new { status_code = 2, status = "Activation '" + formId + "' does not exist" }));
                }

                return(Json(new { status_code = 0, activation }));
            }
        }
示例#4
0
        private async void Activate_Clicked(object sender, EventArgs e)
        {
            string qrstring = null;

            if (CrossConnectivity.Current.IsConnected)
            {
                try
                {
                    this.InputTransparent = true;
                    UserDialogs.Instance.ShowLoading("Activating Card", MaskType.None);
                    var model = new Models.Activation
                    {
                        CardNumber     = cnumber.Text,
                        PhoneNumber    = cphone.Text,
                        AgentId        = Application.Current.Properties.ContainsKey("Id") ? (int)Application.Current.Properties["Id"] : 0,
                        ActivationDate = DateTime.Now
                    };
                    var      activationService = new Services.Activation();
                    Response response          = await activationService.Activate(model);

                    if (!response.IsSuccessStatusCode)
                    {
                        this.InputTransparent = false;
                        await UserDialogs.Instance.AlertAsync("An error occured");

                        UserDialogs.Instance.HideLoading();
                    }
                    else
                    {
                        this.InputTransparent = false;
                        cnumber.Text          = null;
                        cphone.Text           = null;
                        await UserDialogs.Instance.AlertAsync("Card activated successfully");

                        UserDialogs.Instance.HideLoading();
                    }
                }
                catch (Exception ee)
                {
                    this.InputTransparent = false;
                    UserDialogs.Instance.HideLoading();
                    await UserDialogs.Instance.AlertAsync("There was an error executing your request");
                }
            }
            else
            {
                UserDialogs.Instance.HideLoading();
                await UserDialogs.Instance.AlertAsync("You are not connected to the internet");
            }
        }
        public JsonResult Delete(int formId)
        {
            using (var context = new Data.ApplicationDbContext()) {
                String      authUserId = User.GetClaim(OpenIdConnectConstants.Claims.Subject);
                Models.User authUser   = context.Users.AsNoTracking().FirstOrDefault(u => u.Id.ToString().Equals(authUserId));
                if (authUser == null)
                {
                    return(Json(new { status_code = 2, status = "User '" + authUserId + "' does not exist" }));
                }

                if (!Helpers.PermissionChecker.CanDeleteSite(authUser))
                {
                    return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to delete site(s)" }));
                }

                Models.Activation activation = context.Activations.FirstOrDefault(a => a.ActivationId == formId);
                if (activation == null)
                {
                    return(Json(new { status_code = 2, status = "Activation with ID '" + formId + "' does not exist" }));
                }

                int siteId = activation.SiteId;

                context.Activations.Remove(activation);

                bool   deletedSite = false;
                string siteName    = "";
                List <Models.Activation> activations = context.Activations.AsNoTracking().Where(a => a.SiteId == siteId).ToList();
                if (activations.Count == 0)
                {
                    Models.Site site = context.Sites.FirstOrDefault(s => s.SiteId == siteId);
                    siteName = site.SiteName;
                    context.Sites.Remove(site);
                    deletedSite = true;
                }

                context.SaveChanges();

                Helpers.LogHelper.LogAction(Models.Log.ActionType.DeleteActivation, authUser.Id, formId,
                                            String.Format("{0} (id: {1}) deleted activation '{2}'", authUser.UserName, authUser.Id, formId));
                if (deletedSite)
                {
                    Helpers.LogHelper.LogAction(Models.Log.ActionType.DeleteSite, authUser.Id, formId,
                                                String.Format("{0} (id: {1}) deleted site '{2}'", authUser.UserName, authUser.Id, siteName));
                }
            }

            return(Json(new { status_code = 0 }));
        }
        public JsonResult ApproveSite([FromBody] Models.Activation form)
        {
            using (var context = new Data.ApplicationDbContext()) {
                // Verify user exists & has permission to approve site
                String      authUserId = User.GetClaim(OpenIdConnectConstants.Claims.Subject);
                Models.User authUser   = context.Users.AsNoTracking().FirstOrDefault(u => u.Id.ToString().Equals(authUserId));

                if (authUser == null)
                {
                    return(Json(new { status_code = 2, status = "User '" + authUserId + "' does not exist" }));
                }
                if (!Helpers.PermissionChecker.IsBillingDepartment(authUser) && authUser.Level != 10)
                {
                    return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to approve site" }));
                }

                // Verify site exists & has an activation form
                Models.Site site = context.Sites.AsNoTracking().FirstOrDefault(s => s.SiteId == form.SiteId);
                if (site == null)
                {
                    return(Json(new { status_code = 2, status = "Site for activation form '" + form.ActivationId + "' does not exist (did someone delete it?)" }));
                }

                Models.Activation activation = context.Activations.FirstOrDefault(a => a.SiteId == form.SiteId && a.ActivationId == form.ActivationId);
                if (activation == null)
                {
                    return(Json(new { status_code = 2, status = "Activation form '" + form.ActivationId + "' for site '" + form.SiteId + "' does not exist" }));
                }

                // Verify site has not already been approved by someone else (this shouldn't normally happen, but never hurts to check)
                Models.User approver = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == (int)activation.ApprovedBy);
                if (activation.ApprovedBy.HasValue)
                {
                    // note: may error if a user approves a site then later gets deleted and someone tries to approve the same site again
                    return(Json(new {
                        status_code = 11,
                        status = "Site already approved by '" + (approver != null ? approver.UserName : activation.ApprovedBy.ToString()) + "'",
                        approver = new {
                            approver.FName,
                            approver.LName,
                            name = approver.FName + " " + approver.LName,
                            approver.Id
                        }
                    }));
                }

                // Set site to be approved, as well as additional info
                approver = authUser;
                activation.ApprovedBy    = authUser.Id;
                activation.ApprovalNotes = form.ApprovalNotes;
                site.SiteGuid            = form.Key;
                context.SaveChanges();

                // Info to send to Zapier
                var json = new {
                    Approver   = new { approver.Id, approver.UserName, approver.FName, approver.LName, approver.Phone, approver.Email },
                    Activation = activation
                };

                // Log site being approved and send json object to Zapier
                Helpers.LogHelper.LogAction(Models.Log.ActionType.ApproveSite, authUser.Id, form.SiteId,
                                            String.Format("{0} (id: {1}) approved site {2}'s (site number: {3}) activation", authUser.UserName, authUser.Id, site.SiteName, site.SiteNumber));
                Helpers.LogHelper.NotifyAction(Models.Log.ActionType.ApproveSite, json);

                return(Json(new { status_code = 0 }));
            }
        }