public Modell.Manager ToEntity(Models.Manager source) { return(new Modell.Manager() { ManagerName = source.ManagerName }); }
public Models.Manager MapToManager(Models.Manager manager) { if (manager != null) { manager.Id = Id; manager.Name = Name; manager.IP = IP; manager.Port = Port; manager.Latitude = Latitude; manager.Longitude = Longitude; //manager.Users = Users; } else { manager = new Models.Manager { Name = Name, IP = IP, Port = Port, Users = Users, Latitude = Latitude, Longitude = Longitude }; } return(manager); }
public JsonResult CreateManager([FromBody] Models.Manager manager) { 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.CanAddSite(authUser)) { return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to create managers" })); } if (manager.FName.Length == 0 && manager.LName.Length == 0) { return(Json(new { status_code = 4, status = "Manager must have at least a first or last name" })); } else if (manager.Phone.Length == 0) { return(Json(new { status_code = 4, status = "Manager must have a phone number" })); } context.Managers.Add(manager); context.SaveChanges(); Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateManager, authUser.Id, manager.Id, String.Format("{0} (id: {1}) created manager '{2}' (id: {3})", authUser.UserName, authUser.Id, manager.FName + " " + manager.LName, manager.Id)); return(Json(new { status_code = 0, manager })); } }
public Entities.Manager ParseManager(Models.Manager manager) { return(new Entities.Manager() { Name = manager.Name, Password = manager.Password, Locationid = manager.LocationId, Id = manager.Id }); }
//public List<ManagerUserEditModel> ManagerUserEditModels { get; set; } public static ManagerEditModel Parse(Models.Manager manager) { return(new ManagerEditModel { Id = manager.Id, Name = manager.Name, IP = manager.IP, Port = manager.Port, Latitude = manager.Latitude, Longitude = manager.Longitude, Users = manager.Users, //ManagerUserEditModels = manager.Users.Select(mu => new ManagerUserEditModel(mu)).ToList() }); }
public static DAL.Managers ConvertToDAL(Models.Manager man) { return(new DAL.Managers() { MailM = man.MailM, MCity = man.MCity, MFullName = man.MFullName, MIdentity = man.MIdentity, MNumBallotBox = man.MNumBallotBox, MPassword = man.MPassword, NumStatus = man.NumStatus, ManagersStatus = man.ManagersStatus != null?Models.ManagersStatus.ConvertToDB(man.ManagersStatus) : null, BallotBox = man.BallotBox != null?Models.BallotBox.ConvertToDB(man.BallotBox) : null, City = man.City != null?Models.City.convertToDB(man.City) : null }); }
public IHttpActionResult PostBallotBoxManager([FromBody] Models.Manager manager)//הוספת מנהל קלפי חדש { try { var managerDal = Models.Manager.ConvertToDAL(manager); managerDal.ManagersStatus = db.ManagersStatus.FirstOrDefault(p => p.numStatus == "3"); managerDal.MUserName = GetVoucherNumber(10); managerDal.MPassword = GetVoucherNumber(9); db.Managers.Add(managerDal); db.SaveChanges(); return(Ok()); } catch (Exception ex) { return(BadRequest()); } }
public IHttpActionResult PutManagerCity(string managerId, [FromBody] Models.Manager manager) { try { var manager1 = db.Managers.First(p => p.MIdentity == managerId); //manager1 = Models.Manager.ConvertToDAL(manager); manager1.City = db.City.First(p => p.id == manager.MCity); manager1.ManagersStatus = db.ManagersStatus.FirstOrDefault(p => p.numStatus == "2"); manager1.MFullName = manager.MFullName; manager1.MailM = manager.MailM; db.SaveChanges(); return(Ok(true)); } catch (Exception ex) { return(BadRequest()); } }
//Saved de veranderingen in de tabel: Applicationuser public void Save(Models.Manager manager) { if (manager == null) { throw new ArgumentException("user"); } if (manager.ManagerID == 0) { _repository.Add(manager); } else { _repository.Edit(manager); } _uow.Commit(); }
public IActionResult Create(Models.Manager manager) { if (manager != null) { if (TryValidateModel(manager)) { try { db.Managers.Add(manager); db.SaveChanges(); } catch (Exception e) { Debug.WriteLine($"Error {e.Message}. Stack trace: {e.StackTrace}"); } } } return(RedirectToAction("Index")); }
public IActionResult Update(Models.Manager updatedManager) { if (db.Managers != null) { var manager = db.Managers.FirstOrDefault(x => x.ManagerId == updatedManager.ManagerId); if (manager != null) { if (TryValidateModel(updatedManager)) { manager.ManagerName = updatedManager.ManagerName; db.SaveChanges(); } } return(RedirectToAction("Index")); } else { throw new NullReferenceException("Context does not contain set for Managers"); } }
public static ManagerReturnModel MakeReturnManager(Models.Manager dbManager, Models.Property dbProperty) { return(new ManagerReturnModel { Name = dbManager.names, UserId = dbManager.userId, Username = dbManager.username, Salary = dbManager.salary, Role = dbManager.role, Property = new MiniProperty { Address = dbProperty.address, rooms = dbProperty.rooms, country = dbProperty.country, PropertyId = dbProperty.propertyId, TotalLandLords = dbProperty.landLordProperties.Count, TotalManagers = dbProperty.managers.Count, TotalTenants = dbProperty.tenants.Count } // Add more manager fields }); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { var userList = _db.User.ToList(); returnUrl ??= Url.Content("~/"); ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { var user = new Users { UserName = Input.Email, Email = Input.Email, FName = Input.FName, LName = Input.LName, SName = Input.SName, Role = Input.Role, PhoneNumber = Input.PhoneNumber, AddressId = Input.AddressId, DepartmentId = Input.DepartmentId, Position = Input.Position, EnteredToWork = DateTime.ParseExact(Input.EnteredToWork, "MM/dd/yyyy", CultureInfo.InvariantCulture), EmailConfirmed = true }; // ********************* // ****************************88 var manager = new Models.Manager { UserId = user.Id }; var employee = new Models.Employee { UserId = user.Id, }; var emp = new Models.Employee(); if (user.Role != null && user.Role == SD.Role_Employee) { var managers = _db.Managers.ToList(); var managerId = managers.FirstOrDefault(u => u.UserId == Input.ManagerId).ManagerId; emp.ManagerId = managerId; emp.UserId = user.Id; } // Manager is creating new user if (User.IsInRole(SD.Role_Manager)) { var ManId = _db.Managers.ToList().FirstOrDefault(u => u.UserId == _userManager.GetUserId(User)).ManagerId; var DepId = _db.User.ToList().FirstOrDefault(u => u.Id == _userManager.GetUserId(User)).DepartmentId; user.DepartmentId = DepId; user.Role = SD.Role_Employee; employee.ManagerId = ManId; } var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { var token = await _userManager.GenerateEmailConfirmationTokenAsync(user); var comfirmationLink = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, token }, Request.Scheme); _logger.Log(LogLevel.Warning, comfirmationLink); _logger.LogInformation("User created a new account with password."); if (!await _roleManager.RoleExistsAsync(SD.Role_Admin)) { await _roleManager.CreateAsync(new IdentityRole(SD.Role_Admin)); } if (!await _roleManager.RoleExistsAsync(SD.Role_Employee)) { await _roleManager.CreateAsync(new IdentityRole(SD.Role_Employee)); } if (!await _roleManager.RoleExistsAsync(SD.Role_Manager)) { await _roleManager.CreateAsync(new IdentityRole(SD.Role_Manager)); } if (user.Role == null) { //await _userManager.AddToRoleAsync(user, SD.Role_Requester); user.Role = SD.Role_Admin; } else { if (user.Role == SD.Role_Employee) { _db.Employees.Add(employee); } if (user.Role == SD.Role_Manager) { _db.Managers.Add(manager); } await _userManager.AddToRoleAsync(user, user.Role); } if (user.Role == SD.Role_Admin) { //Console.WriteLine(requester.RequestmakerId + " and " + requester.UserId); await _userManager.AddToRoleAsync(user, user.Role); user.Role = null; } if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl })); } else { if (user.Role == null) { await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } else if (User.IsInRole(SD.Role_Admin)) { //admin is registering new user return(RedirectToAction("Index", "Users", new { Area = "Admin" })); } // else if(user.Role == SD.Role_Manager) // { // return RedirectToAction("Index", "Users", new { Area = "Admin" }); //} else if (User.IsInRole(SD.Role_Manager)) { return(RedirectToAction("Index", "Employees", new { Area = "Manager" })); } } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } Input = new InputModel() { BuildingList = _db.Addresses.Select(i => new SelectListItem { Text = i.Building, Value = i.AddressId.ToString() }), DepartmentList = _db.Departments.ToList().Select(i => new SelectListItem { Text = i.DepartmentName, Value = i.DepartmentId.ToString() }), RoleList = _db.Roles.Select(x => x.Name).Select(i => new SelectListItem { Text = i, Value = i, Selected = false }), ManagerList = userList.Where(u => u.Role == "Manager").Select(i => new SelectListItem { Text = i.FName + " " + i.LName, Value = i.Id.ToString() }), }; // If we got this far, something failed, redisplay form return(Page()); }
public void Update(Models.Manager item) { var manager = _context.Managers.FirstOrDefault(m => (m.Id == item.Id)); manager.SecondName = item.SecondName; }
// GET: ManagerRegister public ActionResult ManagerRegister(int id = 0) { Manager manager = new Models.Manager(); return(View(manager)); }
public void Add(Models.Manager item) { var entity = this.ToEntity(item); managersContext.Manager.Add(entity); }
public void AddAManager(Models.Manager manager) { context.Manager.Add(mapper.ParseManager(manager)); context.SaveChanges(); }
public Modell.Manager GetEntity(Models.Manager source) { var entity = this.managersContext.Manager.FirstOrDefault(x => x.ManagerName == source.ManagerName); return(entity); }
public JsonResult UpdateManager([FromBody] Models.Manager manager) { return(Json(new { status_code = -1, status = "NOT YET IMPLEMENTED" })); }
public JsonResult Create([FromBody] Models.ActivationForm form, [RequiredFromQuery] int type) { if (type == 0) { // Create new site & activation 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.CanAddSite(authUser)) { return(Json(new { status_code = 3, status = "User '" + authUser.UserName + "' does not have permission to activate sites" })); } // Used to check if installer object and/or manager object need to be added to database bool InstallerCreated = false, ManagerCreated = false, OwnerCreated = false; // #1 - Check installer // // if Id is 0, create new installer. Otherwise, verify installer exists if (form.SiteInstaller.Id != 0) { Models.Installer installer = context.Installers.AsNoTracking().FirstOrDefault(i => i.Id == form.SiteInstaller.Id); if (installer == null) { return(Json(new { status_code = 5, status = "Installer '" + form.SiteInstaller.Id + "' does not exist" })); } } else { if (form.SiteInstaller.FName.Length == 0 && form.SiteInstaller.LName.Length == 0) { return(Json(new { status_code = 5, status = "Installer must have at least a first or last name" })); } else if (form.SiteInstaller.Phone.Length == 0) { return(Json(new { status_code = 5, status = "Installer must have a phone number" })); } context.Installers.Add(form.SiteInstaller); InstallerCreated = true; } // #2 - Check manager // // Same logic as installer (0 = new, otherwise use existing) if (form.SiteManager.Id != 0) { Models.Manager manager = context.Managers.AsNoTracking().FirstOrDefault(m => m.Id == form.SiteManager.Id); if (manager == null) { return(Json(new { status_code = 5, status = "Manager '" + form.SiteManager.Id + "' does not exist" })); } } else { if (form.SiteManager.FName.Length == 0 && form.SiteManager.LName.Length == 0) { return(Json(new { status_code = 5, status = "Manager must have at least a first or last name" })); } else if (form.SiteManager.Phone.Length == 0) { return(Json(new { status_code = 5, status = "Manager must have a phone number" })); } context.Managers.Add(form.SiteManager); ManagerCreated = true; } // #3 - Verify new owner info // if (form.NewOwner.Id == 0) { if (context.Users.AsNoTracking().FirstOrDefault(u => form.NewOwner.UserName != null && u.UserName != null && form.NewOwner.UserName.ToLower().Equals(u.UserName.ToLower())) != null) { return(Json(new { status_code = 3, status = "User '" + form.NewOwner.UserName + "' already exists" })); } if (String.IsNullOrWhiteSpace(form.NewOwner.UserName) || String.IsNullOrWhiteSpace(form.NewOwner.Password)) { return(Json(new { status_code = 4, status = "Invalid user creation body" })); } form.NewOwner.Active = true; form.NewOwner.Level = 2; // force user to be owner form.NewOwner.UserLastLogin = new DateTime(2000, 1, 1); OwnerCreated = true; } else { form.NewOwner = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewOwner.Id); if (form.NewOwner == null) { return(Json(new { status_code = 2, status = "Owner '" + form.NewOwner.Id + "' does not exist" })); } } if (!form.PreApproved && (String.IsNullOrWhiteSpace(form.NewOwner.UserName) || String.IsNullOrWhiteSpace(form.NewOwner.Password))) { return(Json(new { status_code = 5, status = "Invalid user creation body" })); } // #4 - Create new site // // note: if site is pre-approved, new site will not be created // Verify site info Models.System system = context.Systems.AsNoTracking().FirstOrDefault(s => s.Id == form.NewSite.SystemId); if (system == null) { return(Json(new { status_code = 5, status = "Invalid system given", id = form.NewSite.SystemId })); } Models.User distrib = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewSite.SiteDistributor); if (distrib == null) { return(Json(new { status_code = 5, status = "Invalid distributor given" })); } if (form.NewSite.SiteName.Length == 0) { return(Json(new { status_code = 5, status = "No site name given" })); } if (!form.NewSite.SiteInstallDate.HasValue) { return(Json(new { status_code = 5, status = "Invalid install date" })); } if (form.NewSite.SiteAddress.Length == 0 || form.NewSite.SiteCity.Length == 0 || form.NewSite.SiteState.Length == 0 || form.NewSite.SiteCountry.Length == 0 || form.NewSite.SiteZip.Length < 5 || form.NewSite.SiteZip.Length > 10) { return(Json(new { status_code = 5, status = "Invalid site address given" })); } if (form.NewSite.SiteOwnerName.Length == 0) { return(Json(new { status_code = 5, status = "No owner name given" })); } if (form.NewSite.SiteOwnerEmail.Length == 0 && form.NewSite.SiteOwnerPhone.Length == 0) { return(Json(new { status_code = 5, status = "Need at least one way to contact owner (none given)" })); } // Generate site info if not pre-approved if (!form.PreApproved) { List <Models.Site> sites = context.Sites.AsNoTracking().OrderByDescending(s => s.SiteNumber).ToList(); int maxSiteNum = -1; foreach (Models.Site s in sites) { if (s.SiteNumber.HasValue) { maxSiteNum = (int)s.SiteNumber; break; } } form.NewSite.SiteNumber = ++maxSiteNum; form.NewSite.SiteActive = true; form.NewSite.SiteEnabled = true; form.NewSite.SiteLastPing = new DateTime(2000, 1, 1); form.NewSite.SiteLastIp = "127.0.0.1"; } // #5 - New activation row // // Need to save these to database to generate any IDs (in case new installer/manager is used, and for new site/owner) if site isn't pre-approved if (!form.PreApproved) { if (form.NewOwner.Id == 0) { context.Users.Add(form.NewOwner); } context.Sites.Add(form.NewSite); context.SaveChanges(); } // Verify that distributor has access to site // (because users can create distributors when activating site) Models.Permission permission = context.Permissions.FirstOrDefault(p => form.NewSite.SiteDistributor.HasValue && p.UserId == form.NewSite.SiteDistributor && p.SiteId == form.NewSite.SiteId); if (permission == null) { permission = new Models.Permission { UserId = (int)form.NewSite.SiteDistributor, SiteId = form.NewSite.SiteId, Access = 1, }; context.Permissions.Add(permission); } else if (permission.Access.HasValue && (int)permission.Access != 1) { permission.Access = 1; } // Set some default values for newly created sites form.NewSite.LastCommunityDrop = new DateTime(1970, 1, 1, 0, 0, 0); form.NewSite.LastGrandDrop = new DateTime(1970, 1, 1, 0, 0, 0); // Activation form needs to save what was submitted, not reflect current information // therefore, activation table essentially acts as a merged version of multiple tables form.ActivationInfo.SiteId = form.NewSite.SiteId; form.ActivationInfo.RoomName = form.NewSite.SiteName; form.ActivationInfo.SystemId = system.Id; form.ActivationInfo.StorePhone = form.NewSite.StorePhone; form.ActivationInfo.InstallerId = form.SiteInstaller.Id; form.ActivationInfo.InstallerFName = form.SiteInstaller.FName; form.ActivationInfo.InstallerLName = form.SiteInstaller.LName; form.ActivationInfo.InstallerEmail = form.SiteInstaller.Email; form.ActivationInfo.InstallerPhone = form.SiteInstaller.Phone; form.ActivationInfo.ManagerId = form.SiteManager.Id; form.ActivationInfo.ManagerFName = form.SiteManager.FName; form.ActivationInfo.ManagerLName = form.SiteManager.LName; form.ActivationInfo.ManagerEmail = form.SiteManager.Email; form.ActivationInfo.ManagerPhone = form.SiteManager.Phone; form.ActivationInfo.OwnerId = form.NewOwner.Id; form.ActivationInfo.OwnerFName = form.NewOwner.FName; form.ActivationInfo.OwnerLName = form.NewOwner.LName; form.ActivationInfo.OwnerEmail = form.NewOwner.Email; form.ActivationInfo.OwnerPhone = form.NewOwner.Phone; form.ActivationInfo.OwnerUserName = form.NewOwner.UserName; form.ActivationInfo.DistributorId = distrib.Id; form.ActivationInfo.DistributorFName = distrib.FName; form.ActivationInfo.DistributorLName = distrib.LName; form.ActivationInfo.SiteAddress = form.NewSite.SiteAddress; form.ActivationInfo.SiteCity = form.NewSite.SiteCity; form.ActivationInfo.SiteState = form.NewSite.SiteState; form.ActivationInfo.SiteCountry = form.NewSite.SiteCountry; form.ActivationInfo.SiteZip = form.NewSite.SiteZip; form.ActivationInfo.SubmissionDate = DateTime.UtcNow; // #6 - Create permission for new site if (!form.PreApproved) { Models.Permission newSitePermission = new Models.Permission { Access = 1, SiteId = form.NewSite.SiteId, UserId = form.NewOwner.Id }; context.Permissions.Add(newSitePermission); } // Since these objects aren't being created through their respective controllers, need to manually log them if (InstallerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateInstaller, authUser.Id, form.SiteInstaller.Id, String.Format("{0} (id: {1}) created installer '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteInstaller.FName + " " + form.SiteInstaller.LName, form.SiteInstaller.Id)); } if (ManagerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateManager, authUser.Id, form.SiteManager.Id, String.Format("{0} (id: {1}) created manager '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteManager.FName + " " + form.SiteManager.LName, form.SiteManager.Id)); } if (!form.PreApproved) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateUser, authUser.Id, form.NewOwner.Id, String.Format("{0} (id: {1}) created user {2} (id: {3})", authUser.UserName, authUser.Id, form.NewOwner.UserName, form.NewOwner.Id)); Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateSite, authUser.Id, form.NewSite.SiteId, String.Format("{0} (id: {1}) created site '{2}' (site number: {3})", authUser.UserName, authUser.Id, form.NewSite.SiteName, form.NewSite.SiteNumber)); } // #7 - Save all final info to database (all information has been verified by this point) // context.Activations.Add(form.ActivationInfo); context.SaveChanges(); // #8 - Logging and alerting // log Helpers.LogHelper.LogAction(Models.Log.ActionType.ActivateSite, authUser.Id, form.NewSite.SiteId, String.Format("{0} (id: {1}) activated site '{2}' (site number: {3})", authUser.UserName, authUser.Id, form.NewSite.SiteName, form.NewSite.SiteNumber)); // send to Zapier to handle proper notification var json = new { SiteId = form.NewSite.SiteNumber, form.NewSite.SiteName, SystemName = system.Name, form.ActivationInfo.SystemId, form.NewSite.StorePhone, form.SiteInstaller, form.SiteManager, NewOwner = new { form.NewOwner.Active, form.NewOwner.Email, form.NewOwner.FName, form.NewOwner.LName, form.NewOwner.Phone, form.NewOwner.UserName }, SiteDistributor = new { distrib.Active, distrib.Email, distrib.FName, distrib.LName, distrib.Phone, distrib.UserName }, form.NewSite.SiteAddress, form.NewSite.SiteCity, form.NewSite.SiteState, form.NewSite.SiteCountry, form.NewSite.SiteZip, SubmissionDate = form.ActivationInfo.SubmissionDate.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), form.ActivationInfo.ActivationNotes }; Helpers.LogHelper.NotifyAction(Models.Log.ActionType.ActivateSite, json); } return(Json(new { status_code = 0, form.NewSite.SiteId })); } else if (type == 1) { // Just create new activation. Site was already approved through old report portal. 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.CanAddSite(authUser)) { return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to activate sites" })); } bool InstallerCreated = false, ManagerCreated = false, OwnerCreated = false; // #1 - Check installer // // if Id is 0, create new installer. Otherwise, verify installer exists if (form.SiteInstaller.Id != 0) { Models.Installer installer = context.Installers.AsNoTracking().FirstOrDefault(i => i.Id == form.SiteInstaller.Id); if (installer == null) { return(Json(new { status_code = 2, status = "Installer '" + form.SiteInstaller.Id + "' does not exist" })); } } else { if (form.SiteInstaller.FName.Length == 0 && form.SiteInstaller.LName.Length == 0) { return(Json(new { status_code = 4, status = "Installer must have at least a first or last name" })); } else if (form.SiteInstaller.Phone.Length == 0) { return(Json(new { status_code = 4, status = "Installer must have a phone number" })); } context.Installers.Add(form.SiteInstaller); InstallerCreated = true; } // #2 - Check manager // // Same logic as installer (0 = new, otherwise use existing) if (form.SiteManager.Id != 0) { Models.Manager manager = context.Managers.AsNoTracking().FirstOrDefault(m => m.Id == form.SiteManager.Id); if (manager == null) { return(Json(new { status_code = 2, status = "Manager '" + form.SiteManager.Id + "' does not exist" })); } } else { if (form.SiteManager.FName.Length == 0 && form.SiteManager.LName.Length == 0) { return(Json(new { status_code = 4, status = "Manager must have at least a first or last name" })); } else if (form.SiteManager.Phone.Length == 0) { return(Json(new { status_code = 4, status = "Manager must have a phone number" })); } context.Managers.Add(form.SiteManager); ManagerCreated = true; } // #3 - Verify new owner info // if (form.NewOwner.Id == 0) { if (context.Users.AsNoTracking().FirstOrDefault(u => form.NewOwner.UserName != null && u.UserName != null && form.NewOwner.UserName.ToLower().Equals(u.UserName.ToLower())) != null) { return(Json(new { status_code = 3, status = "User '" + form.NewOwner.UserName + "' already exists" })); } if (String.IsNullOrWhiteSpace(form.NewOwner.UserName) || String.IsNullOrWhiteSpace(form.NewOwner.Password)) { return(Json(new { status_code = 4, status = "Invalid user creation body" })); } form.NewOwner.Active = true; form.NewOwner.Level = 2; // force user to be owner form.NewOwner.UserLastLogin = new DateTime(2000, 1, 1); OwnerCreated = true; } else { form.NewOwner = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewOwner.Id); if (form.NewOwner == null) { return(Json(new { status_code = 2, status = "Owner '" + form.NewOwner.Id + "' does not exist" })); } } // #4 - Create new site // // Verify site info Models.System system = context.Systems.AsNoTracking().FirstOrDefault(s => s.Id == form.NewSite.SystemId); if (system == null) { return(Json(new { status_code = 4, status = "Invalid system given", id = form.NewSite.SystemId })); } Models.User distrib = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewSite.SiteDistributor); if (distrib == null) { return(Json(new { status_code = 4, status = "Invalid distributor given" })); } if (form.NewSite.SiteName.Length == 0) { return(Json(new { status_code = 4, status = "No site name given" })); } if (!form.NewSite.SiteInstallDate.HasValue || form.NewSite.SiteInstallDate > DateTime.UtcNow) { return(Json(new { status_code = 4, status = "Invalid install date" })); } if (form.NewSite.SiteAddress.Length == 0 || form.NewSite.SiteCity.Length == 0 || form.NewSite.SiteState.Length == 0 || form.NewSite.SiteCountry.Length == 0 || form.NewSite.SiteZip.Length < 5 || form.NewSite.SiteZip.Length > 10) { return(Json(new { status_code = 4, status = "Invalid site address given" })); } if (form.NewSite.SiteOwnerName.Length == 0) { return(Json(new { status_code = 4, status = "No owner name given" })); } if (form.NewSite.SiteOwnerEmail.Length == 0 && form.NewSite.SiteOwnerPhone.Length == 0) { return(Json(new { status_code = 4, status = "Need at least one way to contact owner (none given)" })); } // Copy over any modified info if site is pre-approved if (form.PreApproved) { Models.Site currentSite = context.Sites.FirstOrDefault(s => s.SiteId == form.NewSite.SiteId); currentSite.Copy(form.NewSite, false); context.SaveChanges(); } // #5 - New activation row // // Need to save these to database to generate any IDs (in case new installer/manager is used, and for new site/owner) if (form.NewOwner.Id == 0) { context.Users.Add(form.NewOwner); context.SaveChanges(); } // Activation form needs to save what was submitted, not reflect current information // therefore, activation table essentially acts as a merged version of multiple tables form.ActivationInfo.SiteId = form.NewSite.SiteId; form.ActivationInfo.RoomName = form.NewSite.SiteName; form.ActivationInfo.SystemId = system.Id; form.ActivationInfo.StorePhone = form.NewSite.StorePhone; form.ActivationInfo.InstallerId = form.SiteInstaller.Id; form.ActivationInfo.InstallerFName = form.SiteInstaller.FName; form.ActivationInfo.InstallerLName = form.SiteInstaller.LName; form.ActivationInfo.InstallerEmail = form.SiteInstaller.Email; form.ActivationInfo.InstallerPhone = form.SiteInstaller.Phone; form.ActivationInfo.ManagerId = form.SiteManager.Id; form.ActivationInfo.ManagerFName = form.SiteManager.FName; form.ActivationInfo.ManagerLName = form.SiteManager.LName; form.ActivationInfo.ManagerEmail = form.SiteManager.Email; form.ActivationInfo.ManagerPhone = form.SiteManager.Phone; form.ActivationInfo.OwnerId = form.NewOwner.Id; form.ActivationInfo.OwnerFName = form.NewOwner.FName; form.ActivationInfo.OwnerLName = form.NewOwner.LName; form.ActivationInfo.OwnerEmail = form.NewOwner.Email; form.ActivationInfo.OwnerPhone = form.NewOwner.Phone; form.ActivationInfo.OwnerUserName = form.NewOwner.UserName; form.ActivationInfo.DistributorId = distrib.Id; form.ActivationInfo.DistributorFName = distrib.FName; form.ActivationInfo.DistributorLName = distrib.LName; form.ActivationInfo.SiteAddress = form.NewSite.SiteAddress; form.ActivationInfo.SiteCity = form.NewSite.SiteCity; form.ActivationInfo.SiteState = form.NewSite.SiteState; form.ActivationInfo.SiteCountry = form.NewSite.SiteCountry; form.ActivationInfo.SiteZip = form.NewSite.SiteZip; form.ActivationInfo.SubmissionDate = DateTime.UtcNow; // #6 - Create permission for new site Models.Permission sitePermission = context.Permissions.AsNoTracking().FirstOrDefault(p => p.UserId == form.NewOwner.Id && p.SiteId == form.NewSite.SiteId); if (sitePermission == null) { sitePermission = new Models.Permission { Access = 1, SiteId = form.NewSite.SiteId, UserId = form.NewOwner.Id }; context.Permissions.Add(sitePermission); } // Since these objects aren't being created through their respective controllers, need to manually log them if (InstallerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateInstaller, authUser.Id, form.SiteInstaller.Id, String.Format("{0} (id: {1}) created installer '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteInstaller.FName + " " + form.SiteInstaller.LName, form.SiteInstaller.Id)); } if (ManagerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateManager, authUser.Id, form.SiteManager.Id, String.Format("{0} (id: {1}) created manager '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteManager.FName + " " + form.SiteManager.LName, form.SiteManager.Id)); } if (OwnerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateUser, authUser.Id, form.NewOwner.Id, String.Format("{0} (id: {1}) created user {2} (id: {3})", authUser.UserName, authUser.Id, form.NewOwner.UserName, form.NewOwner.Id)); } // #7 - Save all final info to database (all information has been verified by this point) // // check if form is pre-approved thru old RP if (form.PreApproved) { form.ActivationInfo.ApprovedBy = -1; form.ActivationInfo.ApprovalNotes = "This site was pre-approved through old report portal."; } context.Activations.Add(form.ActivationInfo); context.SaveChanges(); // #8 - Logging and alerting // log Helpers.LogHelper.LogAction(Models.Log.ActionType.ActivateSite, authUser.Id, form.NewSite.SiteId, String.Format("{0} (id: {1}) reactivated site '{2}' (site number: {3})", authUser.UserName, authUser.Id, form.NewSite.SiteName, form.NewSite.SiteNumber)); // send to Zapier to handle proper notification var json = new { SiteId = form.NewSite.SiteNumber, form.NewSite.SiteName, SystemName = system.Name, form.ActivationInfo.SystemId, form.NewSite.StorePhone, form.SiteInstaller, form.SiteManager, NewOwner = new { form.NewOwner.Active, form.NewOwner.Email, form.NewOwner.FName, form.NewOwner.LName, form.NewOwner.Phone, form.NewOwner.UserName }, SiteDistributor = new { distrib.Active, distrib.Email, distrib.FName, distrib.LName, distrib.Phone, distrib.UserName }, form.NewSite.SiteAddress, form.NewSite.SiteCity, form.NewSite.SiteState, form.NewSite.SiteCountry, form.NewSite.SiteZip, SubmissionDate = form.ActivationInfo.SubmissionDate.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), form.ActivationInfo.ActivationNotes }; Helpers.LogHelper.NotifyAction(Models.Log.ActionType.ActivateSite, json); } return(Json(new { status_code = 0 })); } else { return(Json(new { status_code = 5, status = "Unknown status code '" + type + "'" })); } }
/// <summary> /// Import a Manager(2) component. /// </summary> /// <param name="compNode">The Manager component node being imported</param> /// <param name="destParent">Destination parent node that the new child is added to</param> /// <param name="newNode">The new Manager node</param> /// <returns>The new node</returns> private XmlNode ImportManager2(XmlNode compNode, XmlNode destParent, XmlNode newNode) { Models.Manager mymanager = new Models.Manager(); // copy code here // import this object into the new xml document newNode = ImportObject(destParent, newNode, mymanager, XmlUtilities.NameAttr(compNode)); // some Manager components have Memo children. For ApsimX the import // will just put them as the next sibling of the Manager rather // than as a child of the Manager. destParent = this.ImportManagerMemos(compNode, destParent); return newNode; }
/// <summary> /// Import a Manager(1) component. /// </summary> /// <param name="compNode">The node being imported from the apsim file xml</param> /// <param name="destParent">The new parent xml node</param> /// <param name="newNode">The new component node</param> /// <returns>The new node</returns> private XmlNode ImportManager(XmlNode compNode, XmlNode destParent, XmlNode newNode) { Models.Manager mymanager = new Models.Manager(); StringBuilder code = new StringBuilder(); code.Append("using System;\nusing Models.Core;\nusing Models.PMF;\nusing Models.PMF.OldPlant;\nnamespace Models\n{\n"); code.Append("\t[Serializable]\n"); code.Append("\t[System.Xml.Serialization.XmlInclude(typeof(Model))]\n"); code.Append("\tpublic class Script : Model\n"); code.Append("\t{\n"); code.Append("\t\t[Link] Clock Clock;\n"); List<string> startofdayScripts = new List<string>(); List<string> endofdayScripts = new List<string>(); List<string> initScripts = new List<string>(); List<string> unknownHandlerScripts = new List<string>(); List<XmlNode> nodes = new List<XmlNode>(); XmlUtilities.FindAllRecursivelyByType(compNode, "script", ref nodes); foreach (XmlNode script in nodes) { // find the event XmlNode eventNode = XmlUtilities.Find(script, "event"); // find the text XmlNode textNode = XmlUtilities.Find(script, "text"); if ((textNode != null) && (textNode.InnerText.Length > 0)) { if (eventNode.InnerText.ToLower() == "init") { initScripts.Add(textNode.InnerText); } else if (eventNode.InnerText.ToLower() == "start_of_day") { startofdayScripts.Add(textNode.InnerText); } else if (eventNode.InnerText.ToLower() == "end_of_day") { endofdayScripts.Add(textNode.InnerText); } else { // use the StartOfDay as a default when the event name is unknown unknownHandlerScripts.Add("// ----- " + eventNode.InnerText + " ----- \n" + textNode.InnerText); } } } // append all the scripts for each type if (initScripts.Count > 0) { code.Append("\t\t[EventSubscribe(\"Commencing\")]\n"); code.Append("\t\tprivate void OnSimulationCommencing(object sender, EventArgs e)\n"); code.Append("\t\t{\n"); foreach (string scripttext in initScripts) { code.Append("\t\t\t/*\n"); code.Append("\t\t\t\t" + scripttext + "\n"); code.Append("\t\t\t*/\n"); } code.Append("\t\t}\n"); } if (startofdayScripts.Count > 0) { code.Append("\t\t[EventSubscribe(\"DoManagement\")]\n"); code.Append("\t\tprivate void OnDoManagement(object sender, EventArgs e)\n"); code.Append("\t\t{\n"); foreach (string scripttext in startofdayScripts) { code.Append("\t\t\t/*\n"); code.Append("\t\t\t\t" + scripttext + "\n"); code.Append("\t\t\t*/\n"); } code.Append("\t\t}\n"); } if (endofdayScripts.Count > 0) { code.Append("\t\t[EventSubscribe(\"DoCalculations\")]\n"); code.Append("\t\tprivate void OnDoCalculations(object sender, EventArgs e)\n"); code.Append("\t\t{\n"); foreach (string scripttext in endofdayScripts) { code.Append("\t\t\t/*\n"); code.Append("\t\t\t\t" + scripttext + "\n"); code.Append("\t\t\t*/\n"); } code.Append("\t\t}\n"); } if (unknownHandlerScripts.Count > 0) { code.Append("\t\t//[EventSubscribe(\"unknown\")]\n"); code.Append("\t\t//private void OnUnknown(object sender, EventArgs e)\n"); code.Append("\t\t//{\n"); foreach (string scripttext in unknownHandlerScripts) { code.Append("\t\t\t/*\n"); code.Append("\t\t\t\t" + scripttext + "\n"); code.Append("\t\t\t*/\n"); } code.Append("\t\t//}\n"); } code.Append("\t}\n}\n"); mymanager.Code = code.ToString(); // import this object into the new xml document newNode = ImportObject(destParent, newNode, mymanager, XmlUtilities.NameAttr(compNode)); // some Manager components have Memo children. For ApsimX the import // will just put them as the next sibling of the Manager rather // than as a child of the Manager. destParent = this.ImportManagerMemos(compNode, destParent); return newNode; }