/////////////////////////////////////////////////////////////////////////////////
        // Register Contact / User
        /////////////////////////////////////////////////////////////////////////////////

        // GET: Register/Contact
        public async Task <ActionResult> Contact(Guid organizationId, Guid contactId)
        {
            GNOrganization organization = await organizationService.Find(organizationId);

            GNContact contact = await contactService.Find(contactId);

            if (contact != null && contact.IsInviteAccepted.HasValue && contact.IsInviteAccepted.Value)
            {
                return(RedirectToAction("ContactComplete", new { id = contact.Id }));
            }

            RegisterContactViewModel model = new RegisterContactViewModel
            {
                OrgId          = organization.Id,
                OrgName        = organization.Name,
                ContactId      = contact.Id,
                Email          = contact.Email,
                FirstName      = contact.FirstName,
                LastName       = contact.LastName,
                Title          = contact.Title,
                Phone          = contact.Phone,
                Fax            = contact.Fax,
                Website        = contact.Website,
                StreetAddress1 = contact.StreetAddress1,
                StreetAddress2 = contact.StreetAddress2,
                City           = contact.City,
                State          = contact.State,
                Zip            = contact.Zip,
            };

            return(View(model));
        }
        public override async Task <List <GNCloudFile> > FindAll(GNContact userContact, int start = 0, int end = 10, Dictionary <string, object> filters = null)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            List <GNCloudFile> entities = null;

            if (filters != null && filters.ContainsKey("CloudFileCategory.Name"))
            {
                var filterVal = (string)filters["CloudFileCategory.Name"];

                entities =
                    await db.GNCloudFiles
                    .Include(f => f.CloudFileCategory)
                    .Where(f => f.CloudFileCategory.Name == filterVal)
                    .OrderByDescending(f => f.CreateDateTime)
                    .ToListAsync();
            }
            else
            {
                entities =
                    await db.GNCloudFiles
                    .Include(f => f.CloudFileCategory)
                    .OrderByDescending(f => f.CreateDateTime)
                    .ToListAsync();
            }

            return(EvalEntityListSecurity(userContact, entities));
        }
Ejemplo n.º 3
0
        public override async Task <List <GNProject> > FindAll(GNContact userContact, int start = 0, int end = 10, Dictionary <string, object> filters = null)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            IQueryable <GNProject> projects = FindMyProjects(userContact);

            //Filter by Filter Keys
            if (filters != null && filters.Count != 0)
            {
                string filterVal = null;

                if (filters.ContainsKey("Organization"))
                {
                    filterVal = (string)filters["Organization"];
                    projects  = projects.Where(p => p.Teams.FirstOrDefault().Organization.Name.Contains(filterVal));
                }

                if (filters.ContainsKey("Team Name"))
                {
                    filterVal = (string)filters["Team Name"];
                    projects  = projects.Where(p => p.Teams.FirstOrDefault().Name.Contains(filterVal));
                }

                if (filters.ContainsKey("Project Name"))
                {
                    filterVal = (string)filters["Project Name"];
                    projects  = projects.Where(p => p.Name.Contains(filterVal));
                }

                if (filters.ContainsKey("Project Lead"))
                {
                    filterVal = (string)filters["Project Lead"];
                    projects  = projects.Where(p => p.ProjectLead.FirstName.Contains(filterVal) || p.ProjectLead.LastName.Contains(filterVal));
                }

                if (filters.ContainsKey("All"))
                {
                    filterVal = (string)filters["All"];
                    projects  = projects
                                .Where(p => p.Name.Contains(filterVal) ||
                                       p.Teams.FirstOrDefault().Organization.Name.Contains(filterVal) ||
                                       p.Teams.FirstOrDefault().Name.Contains(filterVal) ||
                                       p.ProjectLead.FirstName.Contains(filterVal) ||
                                       p.ProjectLead.LastName.Contains(filterVal));
                }
            }

            //Order By Results
            projects = projects
                       .OrderBy(p => p.ProjectLead.LastName)
                       .OrderBy(p => p.Teams.FirstOrDefault().Organization.Name)
                       .OrderBy(p => p.Teams.FirstOrDefault().Name)
                       .OrderBy(p => p.Name)
                       .OrderByDescending(t => t.CreateDateTime);

            //Limit Result Size
            projects = projects.Skip(start).Take(end - start);

            return(EvalEntityListSecurity(userContact, await projects.ToListAsync()));
        }
Ejemplo n.º 4
0
        public override async Task <GNTeam> Insert(GNContact userContact, object entity)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            GNTeam team = await base.Insert(userContact, entity);

            var teamManagerRole = (await this.aspNetRoleService.FindAll()).SingleOrDefault(r => r.Name == "TEAM_MANAGER");

            GNTeamMember teamMember = new GNTeamMember()
            {
                GNTeamId         = team.Id,
                GNContactId      = team.GNContactId,
                Team             = await Find(userContact, team.Id),
                Contact          = db.GNContacts.Find(team.GNContactId),
                AssignDate       = DateTime.Now,
                CreateDateTime   = DateTime.Now,
                CreatedBy        = userContact.Id,
                CreatedByContact = db.GNContacts.Find(userContact.Id)
            };

            db.GNTeamMembers.Add(teamMember);
            await db.SaveChangesAsync();

            return(team);
        }
Ejemplo n.º 5
0
        public ActionResult EditMyProfile(GNContact contact)
        {
            if (ModelState.IsValid)
            {
                GNContact myProfileContact = this.db.GNContacts.Find(contact.Id);

                myProfileContact.FirstName      = contact.FirstName;
                myProfileContact.LastName       = contact.LastName;
                myProfileContact.Title          = contact.Title;
                myProfileContact.Phone          = contact.Phone;
                myProfileContact.Fax            = contact.Fax;
                myProfileContact.Website        = contact.Website;
                myProfileContact.StreetAddress1 = contact.StreetAddress1;
                myProfileContact.StreetAddress2 = contact.StreetAddress2;
                myProfileContact.City           = contact.City;
                myProfileContact.State          = contact.State;
                myProfileContact.Zip            = contact.Zip;

                this.db.SaveChanges();

                return(RedirectToAction("MyProfile"));
            }

            auditResult = audit.LogEvent(UserContact, Guid.Empty, this.ENTITY, this.Request.UserHostAddress, "EDIT_MY_PROFILE");

            return(View(contact));
        }
Ejemplo n.º 6
0
        public IQueryable <GNProject> FindMyProjects(GNContact userContact)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            IQueryable <GNProject> projects = null;

            //Filter by Role
            //GN_ADMIN
            if (aspNetRoleService.IsUserContactAdmin(userContact))
            {
                projects = db.GNProjects;
            }
            //ORG_MANAGER
            else if (userContact.IsInRole("ORG_MANAGER"))
            {
                projects = db.GNProjects
                           .Where(p => p.Teams.Select(t => t.OrganizationId).Contains(userContact.GNOrganizationId));
            }
            //TEAM_MANAGER, PROJECT_MANAGER, TEAM_MEMBER
            else
            {
                projects = db.GNTeams
                           .Where(t => (
                                      t.OrganizationId == userContact.GNOrganizationId &&
                                      t.TeamMembers.Count(tm => tm.GNContactId == userContact.Id) != 0
                                      )
                                  ).SelectMany(t => t.Projects);
            }

            return(projects);
        }
Ejemplo n.º 7
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////
        // My Account - Controller Methods
        /////////////////////////////////////////////////////////////////////////////////////////////////////////

        #region MyAccountControllerMethods

        private void EvalCanViewContact()
        {
            GNContact contact = new GNContact();

            contact = contactService.EvalEntitySecurity(UserContact, contact);
            ViewBag.CanViewContact = contact.CanView;
        }
Ejemplo n.º 8
0
        public ActionResult MyOrganization()
        {
            auditResult = audit.LogEvent(UserContact, UserContact.Id, this.ENTITY, this.Request.UserHostAddress, "VIEW_MY_ORGANIZATION");

            var            contact      = (GNContact)ViewBag.ContactForUser;
            GNOrganization organization = db.GNOrganizations.Find(contact.GNOrganizationId);

            if (organization == null)
            {
                return(HttpNotFound());
            }

            //eval CanInvite
            GNContact contactObj = new GNContact
            {
                GNOrganizationId = UserContact.GNOrganizationId
            };

            contactObj        = contactService.EvalEntitySecurity(UserContact, contactObj);
            ViewBag.CanInvite = contactObj.CanCreate;

            EvalCanViewContact();

            return(View(organization));
        }
        public virtual T EvalEntitySecurity(GNContact userContact, T entity)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            if (entity != null)
            {
                LogUtil.Info(logger, "Adding entity security info to entity");

                var props = entity.GetType().GetProperties().Select(p => p.Name);

                if (props.Contains("CanCreate"))
                {
                    entity.GetType().GetProperty("CanCreate").SetValue(entity, true);
                }
                if (props.Contains("CanView"))
                {
                    entity.GetType().GetProperty("CanView").SetValue(entity, true);
                }
                if (props.Contains("CanEdit"))
                {
                    entity.GetType().GetProperty("CanEdit").SetValue(entity, true);
                }
                if (props.Contains("CanDelete"))
                {
                    entity.GetType().GetProperty("CanDelete").SetValue(entity, true);
                }
            }

            LogUtil.Info(logger, "Added entity security info to entity");

            return(entity);
        }
        public virtual List <T> EvalEntityListSecurity(GNContact userContact, List <T> entities)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            if (userContact != null && entities != null)
            {
                LogUtil.Info(logger, "Adding entity security info to entity list items");

                List <T> entitiesSecure = new List <T>();
                foreach (var entity in entities)
                {
                    entitiesSecure.Add(EvalEntitySecurity(userContact, entity));
                }
                ;

                LogUtil.Debug(logger, "entities.Count = " + entities.Count);
                LogUtil.Debug(logger, "entitiesSecure.Count = " + entitiesSecure.Count);

                entities = entitiesSecure;
            }

            if (userContact == null)
            {
                LogUtil.Warn(logger, "userContact is NULL");
            }

            LogUtil.Info(logger, "Added entity security info to entity list items");

            return(entities);
        }
        public virtual async Task <int> Delete(GNContact userContact, params object[] keys)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            int result = 0;

            object entity = await Find(keys);

            entity = EvalEntitySecurity(userContact, (T)entity);

            var props = entity.GetType().GetProperties().Select(p => p.Name);

            if (!props.Contains("CanDelete") || (bool)entity.GetType().GetProperty("CanDelete").GetValue(entity))
            {
                LogUtil.Info(logger, "Deleting entity");

                result = await Delete(keys);
            }
            else
            {
                Exception e = new Exception("Not allowed to delete item.");
                LogUtil.Error(logger, e.Message, e);
                throw e;
            }

            LogUtil.Info(logger, "Deleted entity");

            return(result);
        }
        public virtual async Task <T> Update(GNContact userContact, object entity)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            T result = default(T);

            db.Entry(entity).State = EntityState.Modified;

            entity = EvalEntitySecurity(userContact, (T)entity);

            var props = entity.GetType().GetProperties().Select(p => p.Name);

            if (!props.Contains("CanEdit") || (bool)entity.GetType().GetProperty("CanEdit").GetValue(entity))
            {
                LogUtil.Info(logger, "Updating entity");

                result = await Update((T)entity);
            }
            else
            {
                Exception e = new Exception("Not allowed to update item.");
                LogUtil.Error(logger, e.Message, e);
                throw e;
            }

            LogUtil.Info(logger, "Updated entity");

            return(result);
        }
        public virtual async Task <T> Insert(GNContact userContact, object entity)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            T result = default(T);

            entity = EvalEntitySecurity(userContact, (T)entity);

            var props = entity.GetType().GetProperties().Select(p => p.Name);

            if (!props.Contains("CanCreate") || (bool)entity.GetType().GetProperty("CanCreate").GetValue(entity))
            {
                LogUtil.Info(logger, "Inserting entity");

                if (props.Contains("CreatedBy"))
                {
                    entity.GetType().GetProperties().Where(p => p.Name == "CreatedBy").FirstOrDefault().SetValue(entity, userContact.Id);
                }

                result = await Insert((T)entity);
            }
            else
            {
                Exception e = new Exception("Not allowed to create item.");
                LogUtil.Error(logger, e.Message, e);
                throw e;
            }

            LogUtil.Info(logger, "Inserted entity");

            return(result);
        }
        public async Task <int> AddRelationship(int TemplateId, GNGene Gene, GNContact userContact)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());
            int result = 0;

            return(await Task.Factory.StartNew <int>(() =>
            {
                var tx = db.Database.BeginTransaction();

                result = db.Database.ExecuteSqlCommand(
                    "INSERT INTO [gn].[GNTemplateGenes]([GNTemplateId],[GeneCode],[GNGeneId],[CreatedBy],[CreatedDateTime]) " +
                    "VALUES(@templateId, @geneCode, @geneId, @CreatedBy, @CreateDateTime)",
                    new SqlParameter("@templateId", TemplateId),
                    new SqlParameter("@geneCode", Gene.GeneCode),
                    new SqlParameter("@geneId", Gene.Id),
                    new SqlParameter("@CreatedBy", userContact.AspNetUserId),
                    new SqlParameter("@CreateDateTime", DateTime.Now));

                tx.Commit();

                return result;
            }));

            //bool auditResult = new GNCloudNoSQLService().LogEvent(userContact, Guid.Parse(leftSampleId), this.ENTITY, "N/A", "INSERT_RELATIONSHIP");
            //auditResult = new GNCloudNoSQLService().LogEvent(userContact, Guid.Parse(rigthSampleId), this.ENTITY, "N/A", "INSERT_RELATIONSHIP");
        }
 private async Task CreateStorageTransactionForCurrentMonth(GNContact userContact, string txnTypeKey)
 {
     await this.transactionService.CreateTransaction(
         userContact, txnTypeKey,
         this.transactionService.INITIALIZE_TXN_DESCRIPTION,
         0.0, "GB");
 }
        public async Task <ActionResult> ContactComplete(Guid?id)
        {
            GNContact contact = await contactService.Find(id);

            ViewBag.userForRegContact = this.identityDB.AspNetUsers.Find(contact.AspNetUserId);

            return(View(contact));
        }
Ejemplo n.º 17
0
        public async Task <bool> AutostartAnalysis(GNAnalysisRequest analysis)
        {
            AnalysisRequestService analysisService = new AnalysisRequestService(db);
            GNContact userContact = db.GNContacts.Find(Guid.Parse("0750f896-e7d6-48d4-a1b9-007059f62784"));
            await analysisService.StartAnalysis(userContact, analysis.Id);

            return(true);
        }
        public async Task InitStorageTransactionLogging(GNContact userContact)
        {
            List <string> txnTypeKeys = await this.db.GNTransactionTypes
                                        .Where(tt => tt.Name.Contains("STORAGE")).Select(tt => tt.Name).ToListAsync();

            foreach (var txnTypeKey in txnTypeKeys)
            {
                await CreateStorageTransactionForCurrentMonth(userContact, txnTypeKey);
            }
        }
Ejemplo n.º 19
0
 public bool IsUserAssignedToTeam(GNContact userContact, GNTeam team)
 {
     if (team != null)
     {
         return(team.TeamMembers.Count(t => t.GNContactId == userContact.Id) != 0);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 20
0
 public bool IsTeamOwnedByOrganization(GNContact userContact, GNTeam team)
 {
     if (team != null)
     {
         return(userContact.GNOrganizationId == team.OrganizationId);
     }
     else
     {
         return(false);
     }
 }
        private async Task <int> CreateNewInvoices()
        {
            int result = 1;

            if (DateTime.Now.Day == DAY_TO_CREATE_INVOICES)
            {
                LogUtil.Info(logger, "CreateNewInvoices()...");
                System.Console.WriteLine("\nCreateNewInvoices()...");

                var                  db                   = new GNEntityModelContainer();
                InvoiceService       invoiceService       = new InvoiceService(db);
                InvoiceDetailService invoiceDetailService = new InvoiceDetailService(db);
                TransactionService   transactionService   = new TransactionService(db);
                AccountService       orgAccountService    = new AccountService(db);

                foreach (var orgAccount in await orgAccountService.FindAll())
                {
                    try
                    {
                        LogUtil.Info(logger, "Account = " + orgAccount.Organization.Name);
                        System.Console.WriteLine("\nAccount = " + orgAccount.Organization.Name);

                        //get user contact
                        GNContact userContact = orgAccount.AccountOwner;
                        if (userContact == null)
                        {
                            userContact = db.GNContacts.Where(c => c.GNOrganizationId == orgAccount.Organization.Id).FirstOrDefault();
                        }

                        if (userContact != null)
                        {
                            string    thisCycle       = String.Format("{0:yyyyMM}", DateTime.Now);
                            GNInvoice newInvoiceMonth = invoiceService.GetInvoiceForDateTime(userContact, thisCycle);

                            if (newInvoiceMonth == null)
                            {
                                newInvoiceMonth = await invoiceService.CreateInvoiceForCurrentMonth(userContact, orgAccount);
                            }

                            System.Console.WriteLine("\nInvoice for Cycle " + thisCycle + " for Organization " + orgAccount.Organization.Name + " is " + newInvoiceMonth.Id);
                            LogUtil.Info(logger, "Invoice for Cycle " + thisCycle + " for Organization " + orgAccount.Organization.Name + " is " + newInvoiceMonth.Id);
                        }
                    }
                    catch (Exception ex)
                    {
                        result = 0;
                        LogUtil.Warn(logger, ex.Message, ex);
                        System.Console.WriteLine(ex.Message);
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 22
0
        private static void ReStartFailedAnalysis(AnalysisRequestService analysisRequestService, GNAnalysisRequest analysisRequest)
        {
            if (RESTART_ANALYSIS_FEATURE_ACTIVE)
            {
                try
                {
                    //get analysis request from db
                    GNAnalysisRequest ar = analysisRequestService.db.GNAnalysisRequests
                                           .Include(a => a.AnalysisType)
                                           .Include(a => a.GNAnalysisRequestGNSamples.Select(s => s.GNSample).Select(s => s.CloudFiles))
                                           .Include(a => a.AnalysisStatus)
                                           .Include(a => a.AnalysisResult)
                                           .Where(a => a.Id == analysisRequest.Id)
                                           .FirstOrDefault();

                    //determine if analysis re-start is allowed
                    ar = analysisRequestService.IsValidSampleSet(ar);
                    ar.CanReStartAnalysis = analysisRequestService.IsAnalysisRestartAllowed(ar, FORCE_RESTART_ANALYSIS);

                    //restart analysis
                    if (ar.CanReStartAnalysis && ar.IsFailedRequest)
                    {
                        LogUtil.Info(logger, "Restart Analysis for AR ID [" + ar.Id + "]...");
                        System.Console.WriteLine("\nRestart Analysis for AR ID [" + ar.Id + "]...");

                        var t = Task.Run(async delegate
                        {
                            var arService = new AnalysisRequestService(new GNEntityModelContainer(), new IdentityModelContainer());

                            //get user contact
                            GNContact userContact = arService.db.GNContacts.Find(ar.CreatedBy);

                            if (arService.analysisRequestPendingCloudMessageService == null || arService.cloudStorageService == null)
                            {
                                arService.InitCloudServices(userContact.GNOrganization.AWSConfigId);
                            }

                            await arService.StartAnalysis(userContact, ar.Id);
                        });
                    }
                    else
                    {
                        LogUtil.Info(logger, "UNABLE to Restart Analysis for AR ID [" + ar.Id + "]...");
                        System.Console.WriteLine("\nUNABLE to Restart Analysis for AR ID [" + ar.Id + "]...");
                    }
                }
                catch (Exception e)
                {
                    LogUtil.Error(logger, "Unable to Process Failure of Analysis " + analysisRequest.Id + " : " + e.Message, e);
                }
            }
        }
Ejemplo n.º 23
0
        public override async Task <int> Delete(GNContact userContact, params object[] keys)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            var entityKey = (Guid)keys[0];

            db.GNTeamMembers.RemoveRange(db.GNTeamMembers.Where(tm => tm.GNTeamId == entityKey));
            int result = await db.SaveChangesAsync();

            result = await base.Delete(userContact, entityKey);

            return(result);
        }
Ejemplo n.º 24
0
        public async Task <List <GNSample> > FindByOrganizationId(GNContact userContact, Guid organizationId)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            List <GNSample> entities =
                await db.GNSamples
                .Include(g => g.Organization)
                .Where(s => s.GNOrganizationId == organizationId)
                //.OrderByDescending(s => s.CreateDateTime)
                .ToListAsync();

            return(EvalEntityListSecurity(userContact, entities));
        }
        public override AspNetUser EvalEntitySecurity(GNContact userContact, AspNetUser user)
        {
            LogUtil.LogMethod(logger, MethodBase.GetCurrentMethod());

            if (user != null)
            {
                user.CanCreate = true;
                user.CanView   = true;
                user.CanEdit   = true;
                user.CanDelete = true;
            }

            return(user);
        }
        private bool IsCreatorOfSampleForCloudFile(GNContact userContact, GNCloudFile cloudFile)
        {
            bool isCreatorOfSample = false;

            foreach (var sample in this.db.GNSamples.Where(s => s.CloudFiles.Select(f => f.Id).Contains(cloudFile.Id)))
            {
                if (sample.CreatedBy != null && sample.CreatedBy != Guid.Empty && userContact.Id == sample.CreatedBy)
                {
                    isCreatorOfSample = true;
                    break;
                }
            }

            return(isCreatorOfSample);
        }
        private bool IsCloudFileOwnedByOrganization(GNContact userContact, GNCloudFile cloudFile)
        {
            bool isOwnedByOrg = false;

            foreach (var sample in this.db.GNSamples.Where(s => s.CloudFiles.Select(f => f.Id).Contains(cloudFile.Id)))
            {
                if (userContact.GNOrganizationId == sample.GNOrganizationId)
                {
                    isOwnedByOrg = true;
                    break;
                }
            }

            return(isOwnedByOrg);
        }
Ejemplo n.º 28
0
        public bool IsUserAssignedToTeamAsLead(GNContact userContact, GNTeam team)
        {
            if (team != null && team.TeamLead == null)
            {
                team.TeamLead = db.GNContacts.Find(team.GNContactId);
            }

            if (userContact != null && team != null && team.TeamLead != null)
            {
                return(team.TeamLead.Id == userContact.Id);
            }
            else
            {
                return(false);
            }
        }
        public async Task <ActionResult> ContactSubmit(RegisterContactViewModel model)
        {
            if (ModelState.IsValid)
            {
                string orgId = model.OrgId.ToString();

                //Auth or Create User
                AspNetUser aspNetUser = await AuthCreateUser(model.Email, model.Password, model.IsExistingUser,
                                                             verifyEmail : false, signUpForNews : model.SignUpForNewsAndProducts, organizationId : orgId);

                if (ModelState.IsValid && aspNetUser != null)
                {
                    GNContact contact = await contactService.Find(model.ContactId);

                    contact.AspNetUserId = aspNetUser.Id;

                    contact.Email          = model.Email;
                    contact.FirstName      = model.FirstName;
                    contact.LastName       = model.LastName;
                    contact.Title          = model.Title;
                    contact.Phone          = model.Phone;
                    contact.Fax            = model.Fax;
                    contact.Website        = model.Website;
                    contact.StreetAddress1 = model.StreetAddress1;
                    contact.StreetAddress2 = model.StreetAddress2;
                    contact.City           = model.City;
                    contact.State          = model.State;
                    contact.Zip            = model.Zip;

                    contact.IsInviteAccepted            = true;
                    contact.IsSubscribedForNewsletters  = model.SignUpForNewsAndProducts;
                    contact.TermsAcceptDateTime         = DateTime.Now;
                    contact.PrivacyPolicyAcceptDateTime = DateTime.Now;

                    contact = await contactService.Update(contact);

                    if (contact != null)
                    {
                        return(RedirectToAction("ContactComplete", new { id = contact.Id }));
                    }
                }
            }

            return(View(model));
        }
Ejemplo n.º 30
0
        public override async Task <T> Find(GNContact userContact, params object[] keys)
        {
            T entity = await base.Find(userContact, keys);

            if (entity != null)
            {
                var props = entity.GetType().GetProperties().Select(p => p.Name);

                if (props.Contains("CreatedBy") && props.Contains("CreatedByContact"))
                {
                    object createdByGuidObj = entity.GetType().GetProperties()
                                              .Where(p => p.Name == "CreatedBy")
                                              .FirstOrDefault()
                                              .GetValue(entity);

                    if (createdByGuidObj != null)
                    {
                        GNContact createdByContact = this.db.GNContacts.Find((Guid)createdByGuidObj);

                        if (createdByContact != null)
                        {
                            entity.GetType().GetProperties()
                            .Where(p => p.Name == "CreatedByContact")
                            .FirstOrDefault()
                            .SetValue(entity, createdByContact);
                        }
                    }
                }

                /*
                 * if (props.Contains("CreateDateTime"))
                 * {
                 *  entity.GetType().GetProperties()
                 *      .Where(p => p.Name == "CreateDateTime")
                 *      .FirstOrDefault()
                 *      .SetValue(entity,
                 *          entity.GetType().GetProperties()
                 *              .Where(p => p.Name == "CreateDateTime")
                 *              .FirstOrDefault()
                 *              .GetValue(entity));
                 * }*/
            }

            return(entity);
        }