public HttpResponseMessage DeleteFileByUsername()
        {
            try
            {
                using (var db = new ProfileInformationDbContext())
                {
                    var userName = User.Identity.Name;

                    telemetry.TrackEvent("DeleteFileByUsername", new Dictionary <string, string> {
                        { "User", userName }
                    });

                    var profile = db.Profiles.FirstOrDefault(x => x.Username == userName);

                    profile.PictureContent = null;
                    profile.PictureType    = null;

                    db.SaveChanges();
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                telemetry.TrackException(ex);
                throw;
            }
        }
        public HttpResponseMessage DeleteFile(string id)
        {
            try
            {
                using (var db = new ProfileInformationDbContext())
                {
                    var userName = User.Identity.Name;

                    telemetry.TrackEvent("DeleteFile", new Dictionary <string, string> {
                        { "User", userName }, { "FileId", id }
                    });

                    var profile = db.Profiles.FirstOrDefault(x => x.Username == userName);

                    var file = profile.AdditionalFiles.FirstOrDefault(x => x.AdditionalFileId == int.Parse(id));
                    db.Entry(file).State = System.Data.Entity.EntityState.Deleted;

                    db.SaveChanges();
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                telemetry.TrackException(ex);
                throw;
            }
        }
        private GenerationData GetGenerationData(string language, string id)
        {
            using (var db = new ProfileInformationDbContext())
            {
                Profile profile = null;

                if (!string.IsNullOrEmpty(id))
                {
                    profile = db.Profiles
                              .Where(x => x.ProfileId.ToString() == id)
                              .Include(_ => _.Educations)
                              .Include(_ => _.AdditionalCourses)
                              .Include(_ => _.Languages)
                              .Include(_ => _.Companies.Select(x => x.Positions.Select(y => y.KeyTasks)))
                              .Include(_ => _.Memberships)
                              .Include(_ => _.AdditionalFiles)
                              .FirstOrDefault();
                }
                else
                {
                    var userName = User.Identity.Name;
                    profile = db.Profiles
                              .Where(x => x.Username == userName)
                              .Include(_ => _.Educations)
                              .Include(_ => _.AdditionalCourses)
                              .Include(_ => _.Languages)
                              .Include(_ => _.Companies.Select(x => x.Positions.Select(y => y.KeyTasks)))
                              .Include(_ => _.Memberships)
                              .Include(_ => _.AdditionalFiles)
                              .FirstOrDefault();
                }

                return(DataFromProfile(profile, language));
            }
        }
        private void CreateProfile(string name, string surname, string email, string profilePictureClaim)
        {
            ImageDownloadResponse pictureContent = null;

            if (!string.IsNullOrEmpty(profilePictureClaim))
            {
                var profilePicture = JObject.Parse(profilePictureClaim);
                var elements       = profilePicture.SelectTokens("$.displayImage~.elements[*]").ToList();

                foreach (var element in elements)
                {
                    var artifact = element.SelectToken("$.artifact").Value <string>();
                    if (artifact.Contains("shrink_400_400"))
                    {
                        var identifier    = element.SelectTokens("$.identifiers[*]").First();
                        var linkToPicture = identifier.SelectToken("$.identifier").Value <string>();

                        pictureContent = DownloadRemoteImageFile(linkToPicture);
                        break;
                    }
                }
            }

            using (var db = new ProfileInformationDbContext())
            {
                var profile = db.Profiles.FirstOrDefault(x => x.Username == email);

                if (profile != null)
                {
                    profile.FullName = $"{name} {surname}";

                    if (pictureContent != null)
                    {
                        profile.PictureContent = pictureContent.ImageContent;
                        profile.PictureType    = pictureContent.ImageContentType;
                    }
                }
                else
                {
                    profile = new Profile
                    {
                        Username = email,
                        FullName = $"{name} {surname}",
                        Email    = email
                    };

                    if (pictureContent != null)
                    {
                        profile.PictureContent = pictureContent.ImageContent;
                        profile.PictureType    = pictureContent.ImageContentType;
                    }

                    db.Profiles.Add(profile);
                }

                db.SaveChanges();
            }
        }
        private GenerationData GetGenerationData(string language)
        {
            using (var db = new ProfileInformationDbContext())
            {
                var userName = User.Identity.Name;
                var profile  = db.Profiles.FirstOrDefault(x => x.Username == userName);

                return(DataFromProfile(profile, language));
            }
        }
Ejemplo n.º 6
0
        public ActionResult ConfirmUserDelete(string id)
        {
            try
            {
                telemetry.TrackPageView("ConfirmUserDelete");

                using (var db = new ProfileInformationDbContext())
                {
                    var currentUsername = User.Identity.Name;

                    telemetry.TrackPageView("ConfirmUserDelete");
                    telemetry.TrackEvent("ConfirmUserDelete", new Dictionary <string, string> {
                        { "User", currentUsername }
                    });

                    var profile = db.Profiles.FirstOrDefault(x => x.ProfileId.ToString() == id);

                    var userModel = new ConfirmUserDeleteViewModel
                    {
                        Name         = currentUsername,
                        Id           = id,
                        Email        = profile.Email,
                        FullName     = profile.FullName,
                        LinkedInLink = profile.LinkedInLink,
                        Project      = profile.Project,
                        Username     = profile.Username
                    };

                    db.AuditLogs.Add(new AuditLog
                    {
                        AuditEvent     = AuditEvent.ViewConfirmDeleteUserPage.ToString(),
                        EventTime      = DateTime.Now,
                        UserAffected   = profile.Username,
                        UserAffectedId = id,
                        Username       = currentUsername
                    });

                    db.SaveChanges();

                    return(View(userModel));
                }
            }
            catch (Exception ex)
            {
                telemetry.TrackException(ex);
                throw;
            }
        }
Ejemplo n.º 7
0
        public ActionResult DeleteUser(ConfirmUserDeleteViewModel viewModel)
        {
            try
            {
                var currentUsername = User.Identity.Name;

                telemetry.TrackEvent("DeleteUser", new Dictionary <string, string> {
                    { "User", currentUsername }
                });

                using (var db = new ProfileInformationDbContext())
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        var profile = db.Profiles
                                      .Include("Educations")
                                      .Include("AdditionalCourses")
                                      .Include("Languages")
                                      .Include("Companies.Positions.KeyTasks")
                                      .Include("Memberships")
                                      .Include("AdditionalFiles")
                                      .FirstOrDefault(x => x.ProfileId.ToString() == viewModel.Id);

                        db.Profiles.Remove(profile);

                        db.AuditLogs.Add(new AuditLog
                        {
                            AuditEvent     = AuditEvent.DeleteUser.ToString(),
                            EventTime      = DateTime.Now,
                            UserAffected   = profile.Username,
                            UserAffectedId = viewModel.Id,
                            Username       = currentUsername
                        });

                        db.SaveChanges();
                        transaction.Commit();

                        return(RedirectToAction("Overview"));
                    }
                }
            }
            catch (Exception ex)
            {
                telemetry.TrackException(ex);
                throw;
            }
        }
        public HttpResponseMessage DownloadWordFile(string language, string id)
        {
            try
            {
                telemetry.TrackEvent("DownloadWordFile", new Dictionary <string, string> {
                    { "User", User.Identity.Name }
                });

                var documentManager = new WordDocumentManager();

                var generationData  = GetGenerationData(language, id);
                var cleanedFullName = !string.IsNullOrEmpty(generationData.Personal.FullName) ? generationData.Personal.FullName.Replace(' ', '_') : string.Empty;

                var bytes = documentManager.GetDocument(GetGenerationData(language, id));

                var result = Request.CreateResponse(HttpStatusCode.OK);
                result.Content = new ByteArrayContent(bytes);
                result.Content.Headers.ContentDisposition =
                    new System.Net.Http.Headers.ContentDispositionHeaderValue(
                        "attachment")
                {
                    FileName = $"CV_{cleanedFullName}_{language.ToUpper()}" + ".docx"
                };

                using (var db = new ProfileInformationDbContext())
                {
                    db.AuditLogs.Add(new AuditLog
                    {
                        AuditEvent     = AuditEvent.DownloadDoc.ToString(),
                        EventTime      = DateTime.Now,
                        UserAffected   = generationData.Personal.FullName,
                        UserAffectedId = id,
                        Username       = User.Identity.Name
                    });

                    db.SaveChanges();
                }

                return(result);
            }
            catch (Exception ex)
            {
                telemetry.TrackException(ex);

                return(Request.CreateResponse(HttpStatusCode.InternalServerError));
            }
        }
Ejemplo n.º 9
0
        public async Task <ActionResult> EditUser(string id)
        {
            telemetry.TrackPageView("EditUser");

            using (var db = new ProfileInformationDbContext())
            {
                var currentUsername = User.Identity.Name;

                telemetry.TrackPageView("EditUser");
                telemetry.TrackEvent("EditUser", new Dictionary <string, string> {
                    { "User", currentUsername }
                });

                var profile = db.Profiles.FirstOrDefault(x => x.ProfileId.ToString() == id);

                var user = await UserManager.FindByEmailAsync(profile.Email);

                if (user == null)
                {
                    return(RedirectToAction("UserMissing"));
                }

                var isAdmin = (await UserManager.GetRolesAsync(user.Id)).Contains("Administrator");

                db.AuditLogs.Add(new AuditLog
                {
                    AuditEvent     = AuditEvent.OpenEditUser.ToString(),
                    EventTime      = DateTime.Now,
                    UserAffected   = profile.Username,
                    UserAffectedId = id,
                    Username       = currentUsername
                });

                return(View(new EditUserViewModel()
                {
                    ProfileId = id,
                    UserId = user.Id,
                    Name = user.Name,
                    Surname = user.Surname,
                    Email = user.Email,
                    EmailConfirmed = user.EmailConfirmed,
                    IsAdmin = isAdmin,
                    SelectedAdminResponse = isAdmin ? "Yes" : "No"
                }));
            }
        }
Ejemplo n.º 10
0
        public ActionResult Overview()
        {
            try
            {
                var currentUsername = User.Identity.Name;

                telemetry.TrackPageView("Admin");
                telemetry.TrackEvent("OpenAdmin", new Dictionary <string, string> {
                    { "User", currentUsername }
                });

                AdminOverviewViewModel viewmodel;

                using (var db = new ProfileInformationDbContext())
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        var profile = db.Profiles.FirstOrDefault(x => x.Username == currentUsername);

                        var profiles = db.Profiles.ToList();

                        viewmodel = ProfilesToViewModel(profile.FullName, profiles);

                        db.AuditLogs.Add(new AuditLog
                        {
                            AuditEvent   = AuditEvent.ViewAdminPage.ToString(),
                            EventTime    = DateTime.Now,
                            UserAffected = "None",
                            Username     = currentUsername
                        });

                        db.SaveChanges();
                        transaction.Commit();
                    }

                    return(View(viewmodel));
                }
            }
            catch (Exception ex)
            {
                telemetry.TrackException(ex);
                throw;
            }
        }
        private PresentationGenerationData GetGenerationData(string language, string id)
        {
            using (var db = new ProfileInformationDbContext())
            {
                Profile profile = null;

                if (!string.IsNullOrEmpty(id))
                {
                    profile = db.Profiles.FirstOrDefault(x => x.ProfileId.ToString() == id);
                }
                else
                {
                    var userName = User.Identity.Name;
                    profile = db.Profiles.FirstOrDefault(x => x.Username == userName);
                }

                return DataFromProfile(profile, language);
            }
        }
Ejemplo n.º 12
0
        public async Task <ActionResult> EditUser(EditUserViewModel user)
        {
            using (var db = new ProfileInformationDbContext())
            {
                var currentUsername = User.Identity.Name;

                telemetry.TrackEvent("EditUserSaved", new Dictionary <string, string> {
                    { "User", currentUsername }
                });

                if (user.SelectedAdminResponse == "Yes")
                {
                    UserManager.AddToRole(user.UserId, "Administrator");

                    db.AuditLogs.Add(new AuditLog
                    {
                        AuditEvent     = AuditEvent.UserAddedAsAdministrator.ToString(),
                        EventTime      = DateTime.Now,
                        UserAffected   = user.Email,
                        UserAffectedId = user.UserId,
                        Username       = currentUsername
                    });
                }
                else
                {
                    UserManager.RemoveFromRole(user.UserId, "Administrator");
                    db.AuditLogs.Add(new AuditLog
                    {
                        AuditEvent     = AuditEvent.UserRemovedFromAdministrators.ToString(),
                        EventTime      = DateTime.Now,
                        UserAffected   = user.Email,
                        UserAffectedId = user.UserId,
                        Username       = currentUsername
                    });
                }

                db.SaveChanges();

                return(RedirectToAction("Overview"));
            }
        }
Ejemplo n.º 13
0
        public async Task <ActionResult> UserMissing(UserMissingViewModel viewModel)
        {
            telemetry.TrackPageView("UserMissing");

            using (var db = new ProfileInformationDbContext())
            {
                var currentUsername = User.Identity.Name;

                telemetry.TrackPageView("ConfirmUserDelete");
                telemetry.TrackEvent("ConfirmUserDelete", new Dictionary <string, string> {
                    { "User", currentUsername }
                });

                var profile = db.Profiles.FirstOrDefault(x => x.Username == currentUsername);

                return(View(new UserMissingViewModel
                {
                    Name = profile.FullName
                }));
            }
        }