Beispiel #1
0
        public Organisation CreateOrganisation(CreateOrganisation dto)
        {
            var org = new Organisation()
            {
                Name              = dto.Name,
                TelNumber         = dto.TelNumber,
                AddressLine1      = dto.AddressLine1,
                AddressLine2      = dto.AddressLine2,
                Town              = dto.Town,
                County            = dto.County,
                Postcode          = dto.Postcode,
                DefaultLanguageId = dto.DefaultLanguageId,
                DefaultCalendarId = dto.DefaultCalendarId,
                IsActive          = true
            };

            var rootUser = new OrgUser()
            {
                Organisation = org,
                IsRootUser   = true,
                IsWebUser    = true,
                IsMobileUser = false,
                UserName     = dto.RootUserEmail,
                Email        = dto.RootUserEmail,
                FirstName    = dto.RootUserFirstName,
                Surname      = dto.RootUserSurname,
                TypeId       = OrgUserTypesRepository.Administrator.Id,
                AccountType  = AccountType.WebAccount
            };

            CurrentUOW.OrganisationRepository.InsertOrUpdate(org);

            using (var tran = CurrentUOW.Context.Database.BeginTransaction())
            {
                CurrentUOW.Save();

                var identityResult = CurrentUOW.UserManager.CreateSync(rootUser, dto.RootPassword);
                if (!identityResult.Succeeded)
                {
                    throw new Exception(identityResult.Errors.ToString(". "));
                }

                foreach (var role in OrgUserTypesRepository.Administrator.GetRoles())
                {
                    identityResult = CurrentUOW.UserManager.AddToRoleSync(rootUser.Id, role);
                    if (!identityResult.Succeeded)
                    {
                        throw new Exception(identityResult.Errors.ToString(". "));
                    }
                }

                org.RootUser = rootUser;
                CurrentUOW.Save();

                // if user manager created the application user successfully
                tran.Commit();
            }

            return(org);
        }
Beispiel #2
0
        public FormTemplate Clone(FormTemplate template, OrgUser user, string newTitle, string newColour, Guid?newProjectId)
        {
            var clone = template.Clone();

            clone.Title       = newTitle;
            clone.Colour      = newColour;
            clone.ProjectId   = newProjectId;
            clone.CreatedById = user.Id;
            clone.IsPublished = true;

            using (var tran = Context.Database.BeginTransaction())
            {
                InsertOrUpdate(clone);
                Save();

                if (template.CalendarDateMetricId != null)
                {
                    clone.CalendarDateMetricId = clone.MetricGroups.SelectMany(g => g.Metrics)
                                                 .Single(m => m.ShortTitle == template.CalendarDateMetric.ShortTitle).Id;
                }

                if (template.TimelineBarMetricId != null)
                {
                    clone.TimelineBarMetricId = clone.MetricGroups.SelectMany(g => g.Metrics)
                                                .Single(m => m.ShortTitle == template.TimelineBarMetric.ShortTitle).Id;
                }

                InsertOrUpdate(clone);
                Save();
                tran.Commit();
            }

            return(clone);
        }
Beispiel #3
0
        public ActionResult Contact(ContactViewModel model)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.ErrorMessage = string
                                       .Join("</br>", ModelState.Values.Where(E => E.Errors.Count > 0).SelectMany(E => E.Errors).Select(E => $"{E.ErrorMessage}").ToArray());

                return(View(model));
            }

            OrgUser mayor = Mapper.Map <OrgUser, OrgUser>(DataProvider.GetUserByUserName("Mayor"));

            EmailMessage <ContactViewModel> message = new EmailMessage <ContactViewModel>(model.SenderEmail, mayor.Email)
            {
                Subject = String.Format("{0}{1}", Resources.GetAppResourcesValue(OrganizationPortal.Resources.AppResourcesKeys.AppName), model.Subject != null ? " | " + model.Subject : ""),
                Model   = model
            };

            try
            {
                SendEmail <ContactViewModel>(message, "SendEmailToMayor");
            }
            catch (Exception ex)
            {
                ViewBag.ErrorMessage = ex.Message;
                return(View(model));
            }

            ViewBag.SuccessMessage = "Имейлът беше изпратен успешно !";

            ModelState.Clear();
            return(View(new ContactViewModel()));
        }
Beispiel #4
0
        private void button2_Click(object sender, EventArgs e)
        {
            // add org user
            string strParmaInfo = "";

            GlareLedServices2.GLSysMgrSoapClient cl = new GlareLedServices2.GLSysMgrSoapClient();

            OrgUser userMod = new OrgUser()
            {
                Id       = 0,
                MgrOrgId = 1,
                Name     = "orgname",
                Password = "******"
            };
            string strInfo = JsonStrObjConver.Obj2JsonStr(userMod, typeof(OrgUser));

            RequestModelString obj2 = new RequestModelString()
            {
                Info   = strInfo,
                reqDt  = DateTime.Now,
                TockId = ConstDefineTestWebapi.TockIdEnableTest
            };

            strParmaInfo = JsonStrObjConver.Obj2JsonStr(obj2, typeof(RequestModelString));
            string strResult = cl.AddOrgUser(strParmaInfo);

            MessageBox.Show(strResult);
        }
Beispiel #5
0
        public void CloseLastSubscription(OrgUser user)
        {
            // cancel last subscription, if any.
            var lastSubscription = UnitOfWork.SubscriptionsRepository.AllAsNoTracking
                                   .Where(x => x.OrgUserId == user.Id && x.IsActive)
                                   .OrderByDescending(x => x.DateCreated)
                                   .FirstOrDefault();

            if (lastSubscription != null)
            {
                if (lastSubscription.Type == UserSubscriptionType.Organisation)
                {
                    lastSubscription.EndDate  = DateTimeService.UtcNow;
                    lastSubscription.IsActive = false;
                    UnitOfWork.SubscriptionsRepository.InsertOrUpdate(lastSubscription);
                }
                else
                {
                    var paymentRecord = UnitOfWork.PaymentsRepository.Find(lastSubscription.PaymentRecord.Id);
                    foreach (var record in paymentRecord.Subscriptions)
                    {
                        record.IsActive = false;
                    }

                    UnitOfWork.PaymentsRepository.InsertOrUpdate(paymentRecord);
                }
            }
        }
Beispiel #6
0
        public ActionResult DeleteUsers(int id, int orgId)
        {
            OrgUser entity = _repOrgUser.Find(id);

            _repOrgUser.Delete(entity);
            return(RedirectToAction("Detail", new { id = orgId }));
        }
Beispiel #7
0
        public static bool AddUser(ref OrgUser model, out string strErrorMsg)
        {
            strErrorMsg = "";
            if (IsUserNameExist(model.Name))
            {
                strErrorMsg = ConstDefineBll.NameExist;
                return(false);
            }

            using (GLedDbEntities ent = new GLedDbEntities())
            {
                OrgUser newinfo = new OrgUser()
                {
                    Id       = model.Id,
                    MgrOrgId = model.MgrOrgId,
                    Name     = model.Name,
                    Password = model.Password,
                    CreateDt = DateTime.Now,
                    UpdateDt = DateTime.Now
                };
                ent.OrgUser.Add(newinfo);
                ent.SaveChanges();
                model.Id = newinfo.Id;
            }
            return(true);
        }
Beispiel #8
0
        public void MoveUserCaseToOrganization(OrgUser user, Organisation organisation)
        {
            // update user's organisation
            user.OrganisationId = organisation.Id;

            // update user's current project, if exists
            if (user.CurrentProject != null && user.CurrentProject.CreatedById == user.Id)
            {
                var project = UnitOfWork.ProjectsRepository.Find(user.CurrentProject.Id);
                project.OrganisationId = organisation.Id;    // update project's organisation

                // update threads under this project
                var threads = UnitOfWork.FormTemplatesRepository
                              .AllAsNoTracking
                              .Where(t => t.ProjectId == project.Id)
                              .ToList();

                // update form templates' organisation
                foreach (var form in threads)
                {
                    form.OrganisationId = organisation.Id;
                    UnitOfWork.FormTemplatesRepository.InsertOrUpdate(form);
                }
            }
        }
        private void NotifyOrgAdminAboutApprovedRequest(Organisation organisation, OrgUser orgUser)
        {
            if (organisation.RootUserId.HasValue)
            {
                var orgAdmin = UnitOfWork.OrgUsersRepository
                               .AllAsNoTracking
                               .Where(x => x.Id == organisation.RootUserId.Value)
                               .SingleOrDefault();

                var rootIndex = WebHelpers.GetRootIndexPath();
                var url       = $"{Request.RequestUri.Scheme}://{Request.RequestUri.Authority}/{rootIndex}#!/users/mobile/";

                var emailBody = @"<p>A new user has joined your organisation: <strong>" + orgUser.UserName + @"</strong>.</p>
                            <p>The user's personal case is now filed under your organisation and you have access to it.</p>
                            <p>You can remove this user whenever you like, and put them back under OnRecord.</p>
                            <p><br></p>
                            <p>View the <a href='" + url + @"'>directory of mobile users</a> on the dashboard.</p>";

                var orgAdminEmail = new Email
                {
                    To      = orgAdmin.Email,
                    Subject = $"User joined organization - {orgUser.UserName}",
                    Content = WebHelpers.GenerateEmailTemplate(emailBody, "A user has joined your organization")
                };

                UnitOfWork.EmailsRepository.InsertOrUpdate(orgAdminEmail);
            }
        }
Beispiel #10
0
        public void UnassignRootUserFromProject(OrgUser user, Organisation organisation, Organisation OnRecord)
        {
            if (user.CurrentProject != null && user.CurrentProject.CreatedById == user.Id)
            {
                // remove org root admin from this project
                var rootUserAssignment = UnitOfWork.AssignmentsRepository
                                         .AllAsNoTracking
                                         .Where(x => x.OrgUserId == organisation.RootUserId && x.ProjectId == user.CurrentProject.Id)
                                         .FirstOrDefault();

                UnitOfWork.AssignmentsRepository.Delete(rootUserAssignment);

                // assign project to OnRecord admin again
                if (OnRecord.RootUser != null)
                {
                    var OnRecordRootAssignment = UnitOfWork.AssignmentsRepository
                                                 .AllAsNoTracking
                                                 .Where(x => x.OrgUserId == OnRecord.RootUserId && x.ProjectId == user.CurrentProject.Id)
                                                 .FirstOrDefault();

                    if (OnRecordRootAssignment == null)
                    {
                        AssignRootUserToProject(user.CurrentProject.Id, OnRecord.RootUser.Id);
                    }
                }
            }
        }
        public string AddOrgUser(string strParams)
        {
            string             strError;
            RequestModelString reqinfo = ServerHlper.GetRequestModelString(System.Reflection.MethodBase.GetCurrentMethod().Name,
                                                                           strParams, out strError);

            if (reqinfo == null)
            {
                return(strError);
            }

            if (!LoginBll.CheckLoginId(reqinfo.TockId))
            {
                return(ServerHlper.MakeInfoByStatus(false, ConstDefineWs.LoginInfoError));
            }

            OrgUser mod = JsonStrObjConver.JsonStr2Obj(reqinfo.Info, typeof(OrgUser)) as OrgUser;

            if (mod == null)
            {
                return(ServerHlper.MakeInfoByStatus(false, "需要添加的用户参数不对"));
            }

            if (OrgUserBll.IsUserNameExist(mod.Name))
            {
                return(ServerHlper.MakeInfoByStatus(false, "需要添加的用户名已经存在"));
            }
            bool result = OrgUserBll.AddUser(ref mod, out strError);

            return(ServerHlper.MakeInfoByStatus(result, strError));
        }
Beispiel #12
0
        public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var info = await Authentication.GetExternalLoginInfoAsync();

            if (info == null)
            {
                return(InternalServerError());
            }

            var user = new OrgUser()
            {
                UserName = model.Email, Email = model.Email
            };

            IdentityResult result = await UserManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            result = await UserManager.AddLoginAsync(user.Id, info.Login);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
Beispiel #13
0
        public List <FilledFormDTO> GetUserSurveys(OrgUser orgUser, FormTemplateDiscriminators discriminator, Guid?projectId = null)
        {
            var result = new List <FilledFormDTO>();

            var surveys = UnitOfWork.FilledFormsRepository
                          .AllAsNoTracking
                          .Where(x => x.FormTemplate.Discriminator == discriminator);

            if (projectId.HasValue && projectId != Guid.Empty)
            {
                if (orgUser.Type != OrgUserTypesRepository.Administrator)
                {
                    var threadAssignments = UnitOfWork.ThreadAssignmentsRepository
                                            .AllAsNoTracking
                                            .Where(x => x.OrgUserId == orgUser.Id)
                                            .ToList();

                    var projectFound = threadAssignments.Any(x => x.FormTemplate.ProjectId == projectId);
                    var assignment   = orgUser.Assignments.SingleOrDefault(a => a.ProjectId == projectId);

                    if (!projectFound)
                    {
                        if (assignment == null || !assignment.CanView)
                        {
                            return(null);
                        }
                    }
                }

                surveys = surveys.Where(s => s.ProjectId == projectId);

                result = surveys
                         .ToList()
                         .OrderByDescending(x => x.Date)
                         .Select(s => Mapper.Map <FilledFormDTO>(s))
                         .ToList();
            }
            else
            {
                // return all projects that this user has a case or thread assignment for.
                var caseSurveys   = surveys.Where(s => s.Project.Assignments.Any(a => a.OrgUserId == orgUser.Id && a.CanView));
                var threadSurveys = surveys.Where(s => s.FormTemplate.Assignments.Any(a => a.OrgUserId == orgUser.Id && a.CanView));

                var joinedSurveys = new List <FilledForm>();
                joinedSurveys.AddRange(caseSurveys.ToList());
                joinedSurveys.AddRange(threadSurveys.ToList());
                joinedSurveys = joinedSurveys.Distinct().ToList();

                result = joinedSurveys
                         .ToList()
                         .OrderByDescending(x => x.Date)
                         .Select(s => Mapper.Map <FilledFormDTO>(s))
                         .ToList()
                         .Distinct()
                         .ToList();
            }

            return(result);
        }
Beispiel #14
0
        private IEnumerable <Claim> GetUserRoleClaims(OrgUser user)
        {
            List <Claim> claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Id));
            //claims.Add(new Claim(ClaimTypes.Role, user.UserPermissionType));
            return(claims);
        }
Beispiel #15
0
        public void SubscribeUserToOnRecord(OrgUser user)
        {
            var OnRecord = UnitOfWork.OrganisationRepository.AllAsNoTracking
                           .Where(x => x.Name == "OnRecord")
                           .SingleOrDefault();

            SubscribeUserToOrganization(user, OnRecord);
        }
Beispiel #16
0
 public SurveyProvider(OrgUser user, UnitOfWork uow, bool onlyPublished = true)
 {
     this.User                       = user;
     this.UOW                        = uow;
     this.OnlyPublished              = onlyPublished;
     this.UserTypesWithFullAccess    = new List <OrgUserType>(new[] { OrgUserTypesRepository.Administrator, OrgUserTypesRepository.Manager });
     this.UserTypesWithLimitedAccess = new List <OrgUserType>(new[] { OrgUserTypesRepository.TeamUser, OrgUserTypesRepository.ExternalUser });
 }
Beispiel #17
0
        public ActionResult DeleteConfirmed(Guid id)
        {
            OrgUser orgUser = db.OrgUsers.Find(id);

            db.OrgUsers.Remove(orgUser);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #18
0
        public ActionResult AddMember(int orgId, int selectedUserId)
        {
            OrgUser entitiy = new OrgUser();

            entitiy.OrgId  = orgId;
            entitiy.UserId = selectedUserId;
            _repOrgUser.Insert(entitiy);
            return(RedirectToAction("Detail", new { id = orgId }));
        }
Beispiel #19
0
        private IEnumerable <Claim> GetUserClaims(OrgUser user)
        {
            List <Claim> claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.NameIdentifier, user.Id));
            claims.Add(new Claim(ClaimTypes.Name, user.UserName));
            claims.Add(new Claim(ClaimTypes.Email, user.Email));
            claims.AddRange(this.GetUserRoleClaims(user));
            return(claims);
        }
        public ActionResult AddMember(int selectedUser, int orgId)
        {
            OrgUser orgUser = new OrgUser();

            orgUser.OrgId  = orgId;
            orgUser.UserId = selectedUser;

            _orgUserrepository.Add(orgUser);

            return(RedirectToAction("Detail", new { id = orgId }));
        }
Beispiel #21
0
        public IActionResult Demo()
        {
            OrgUser org = new OrgUser();

            using (var ctx = new lodsContext()) {
                org = new OrgUser();
                org.Organization = ctx.Organization.ToList();
                org.Users        = ctx.Users.ToList();
            }
            return(View(org));
        }
Beispiel #22
0
        public void RemoveUserFromCurrentTeams(OrgUser user)
        {
            // remove this user from any teams in current organisation.
            var teamRecords = UnitOfWork.OrgTeamUsersRepository
                              .AllAsNoTracking
                              .Where(x => x.OrgUserId == user.Id && x.OrganisationTeam.OrganisationId == user.OrganisationId)
                              .ToList();

            foreach (var record in teamRecords)
            {
                UnitOfWork.OrgTeamUsersRepository.Delete(record);
            }
        }
Beispiel #23
0
 public async Task <OrgUser> GetOrgUserByUserID(int userId)
 {
     return(await WithConnection(async c =>
     {
         string sql = "SELECT * FROM org_user WHERE user_id = @UserID and is_del != 1";
         OrgUser orguser = await c.QueryFirstOrDefaultAsync <OrgUser>(sql,
                                                                      new
         {
             UserID = userId
         });
         return orguser;
     }));
 }
Beispiel #24
0
 public ActionResult Edit([Bind(Include = "Id,OrgId,GroupId,UserId,CreatedDate,ModifiedDate,IsActive")] OrgUser orgUser)
 {
     if (ModelState.IsValid)
     {
         db.Entry(orgUser).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.UserId  = new SelectList(db.AppUsers, "Id", "Name", orgUser.UserId);
     ViewBag.GroupId = new SelectList(db.Groups, "Id", "Name", orgUser.GroupId);
     ViewBag.OrgId   = new SelectList(db.Orgs, "Id", "Name", orgUser.OrgId);
     return(View(orgUser));
 }
Beispiel #25
0
 public void Add(OrgUser dto)
 {
     if (string.IsNullOrEmpty(dto.Id))
     {
         dto.Id = ConfigHelper.NewGuid;
     }
     dto.CreateTime = dto.ModifiedTime = DateTime.Now;
     using (var dataContext = DataContext)
     {
         dataContext.OrgUsers.InsertOnSubmit(dto);
         dataContext.SubmitChanges();
     }
 }
Beispiel #26
0
        public async Task <InvokeResult> AddUserToOrgAsync(string orgId, string userId, EntityHeader userOrg, EntityHeader addedBy)
        {
            await AuthorizeOrgAccessAsync(addedBy, userOrg, typeof(OrgUser), Actions.Create, new SecurityHelper()
            {
                OrgId = orgId, UserId = userId
            });

            var appUser = await _appUserRepo.FindByIdAsync(userId);

            if (appUser == null)
            {
                return(InvokeResult.FromError($"Could not find user with user id [{userId}] when attempting to add user to the org [{orgId}]"));
            }

            var org = await _organizationRepo.GetOrganizationAsync(orgId);

            if (org == null)
            {
                return(InvokeResult.FromError($"Could not find org with org id [{orgId}] when attempting to add a user with id [{userId}] to this org."));
            }

            await AuthorizeOrgAccessAsync(addedBy, org.ToEntityHeader(), typeof(OrgUser));

            if (await _orgUserRepo.QueryOrgHasUserAsync(orgId, userId))
            {
                var result = new InvokeResult();
                result.Errors.Add(new ErrorMessage(UserAdminResources.OrganizationUser_UserExists.Replace(Tokens.USERS_FULL_NAME, appUser.Name).Replace(Tokens.ORG_NAME, org.Name)));
                return(result);
            }

            var user = new OrgUser(org.Id, userId)
            {
                Email            = appUser.Email,
                OrganizationName = org.Name,
                IsOrgAdmin       = false,
                IsAppBuilder     = false,
                UserName         = appUser.Name,
                ProfileImageUrl  = appUser.ProfileImageUrl.ImageUrl,
            };

            user.CreatedBy       = addedBy.Text;
            user.CreatedById     = addedBy.Text;
            user.CreationDate    = DateTime.UtcNow.ToJSONString();
            user.LastUpdatedBy   = addedBy.Text;
            user.LastUpdatedById = addedBy.Id;
            user.LastUpdatedDate = user.CreationDate;

            await _orgUserRepo.AddOrgUserAsync(user);

            return(InvokeResult.Success);
        }
Beispiel #27
0
        private async Task <OrgTree> _findTopNode(int userid)
        {
            OrgUser orguser = await _orgRepo.GetOrgUserByUserID(userid);

            OrgTree topNode = null;

            if (orguser != null)
            {
                List <OrgTree> nodes_all = await _orgRepo.ListAllOrgNode();

                topNode = _findTopNode(orguser.NodeID, nodes_all);
            }
            return(topNode);
        }
Beispiel #28
0
        public static bool Validate(this OrgUser orgUser)
        {
            if (orgUser.UserId < 1)
            {
                throw new AppException("The provided org user lacks a user", ExceptionType.Validation);
            }

            if (orgUser.OrgId < 1)
            {
                throw new AppException("The provided org user lacks an org", ExceptionType.Validation);
            }

            return(true);
        }
Beispiel #29
0
        // GET: OrgUsers/Details/5
        public ActionResult Details(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OrgUser orgUser = db.OrgUsers.Find(id);

            if (orgUser == null)
            {
                return(HttpNotFound());
            }
            return(View(orgUser));
        }
        public async Task <IActionResult> RescindAdminRights([FromRoute] int npoId, string userId)
        {
            OrgUser userFromTokenIsInOrg = await _orgUserRepo.GetUserInOrgByOrgIdAndUserId(npoId, GetUserIdFromToken());

            if (userFromTokenIsInOrg == null)
            {
                return(Unauthorized(new { Status = StatusCode(401) }));
            }
            if (!userFromTokenIsInOrg.IsActive && !userFromTokenIsInOrg.IsAdminOfOrg)
            {
                return(Unauthorized(new { Status = StatusCode(401) }));
            }

            var user = await _userRepo.GetUserById(userId);

            if (user == null)
            {
                return(BadRequest(new { Status = false, Message = "User not found" }));
            }

            var org = await _npoRepo.GetNPOById(npoId);

            if (org == null)
            {
                return(BadRequest(new { Status = false, Message = "NPO not found" }));
            }

            var countOfAdmins = await _orgUserRepo.GetCountOfAdminsForOrg(npoId);

            if (countOfAdmins <= 1)
            {
                return(BadRequest(new { Status = StatusCode(400), Message = "Must have a minimum of one admin" }));
            }

            try
            {
                var userIsNoLongerAdmin = await _orgUserRepo.RescindAdminPrivledgesOfUserAsync(npoId, userId);

                if (userIsNoLongerAdmin)
                {
                    return(Ok(new { Status = StatusCode(204) }));
                }

                return(BadRequest(new { Status = StatusCode(400), Message = "Removing admin rights to the user failed." }));
            }
            catch (Exception)
            {
                throw;
            }
        }