예제 #1
0
        public override int SaveChanges()
        {
            var entries = ChangeTracker.Entries().GetEnumerator();

            entries.MoveNext();

            var entry = entries.Current;

            if (entry == null)
            {
                return(0);
            }

            AuditLog log = new AuditLog();

            log.Operation = entry.State.ToString().Substring(0, 1);
            log.Entity    = entry.Entity.ToString().Replace("PRS.Models.", "");

            if (entry.State != EntityState.Added)
            {
                log.EntityKey = GetPrimaryKeyValue(entry.Entity);
            }

            log.UserName = UserName;

            log.OperationDate = DateTime.Now;

            AuditLogs.Add(log);

            int count = base.SaveChanges();

            if (log.EntityKey == 0)
            {
                log.EntityKey    = GetPrimaryKeyValue(entry.Entity);
                Entry(log).State = EntityState.Modified;
                base.SaveChanges();
            }

            return(count);
        }
 public ResponseMessage UpdateStrategicBusiness(AddStrategicBusiness strategicBusiness, int id)
 {
     try
     {
         ResponseMessage response = new ResponseMessage();
         var             sbg      = _context.StrategicBusiness.Where(x => x.Id == id && x.IsDelete == false).FirstOrDefault();
         if (sbg != null)
         {
             if (_context.StrategicBusiness.Where(x => x.Name == strategicBusiness.Name && x.Id != id && x.IsDelete == false).Count() > 0)
             {
                 throw new ValueNotFoundException("Strategic Business Group already exists");
             }
             else
             {
                 sbg.Name     = strategicBusiness.Name;
                 sbg.IsActive = strategicBusiness.IsActive;
                 _context.SaveChanges();
                 AuditLogs audit = new AuditLogs()
                 {
                     Message   = string.Format("Strategic Business Group {0} updated successfully", strategicBusiness.Name),
                     Action    = "Strategic Business",
                     CreatedAt = DateTime.Now
                 };
                 _commonRepo.AuditLog(audit);
                 response.Message = "Strategic Business Group updated sucessfully";
                 return(response);
             }
         }
         else
         {
             throw new ValueNotFoundException("Strategic Business Group not found");
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public ResponseMessage BulkInsertWBS(List <AddWorkBreakDown> lstWorkBreakDown)
        {
            try {
                foreach (AddWorkBreakDown wbs in lstWorkBreakDown)
                {
                    WorkBreakdown wbData  = new WorkBreakdown();
                    WorkBreakdown wbData1 = _context.WorkBreakdown.Where(x => x.WbsId == wbs.WorkBreakDownCode && x.ProjectId == wbs.ProjectId &&
                                                                         x.Segment == wbs.Segment && x.SubSegment == wbs.SubSegment && x.Elements == wbs.Element &&
                                                                         x.IsDelete == false).FirstOrDefault();

                    if (wbData1 == null)
                    {
                        wbData.WbsId      = wbs.WorkBreakDownCode;
                        wbData.Segment    = wbs.Segment;
                        wbData.SubSegment = wbs.SubSegment;
                        wbData.Elements   = wbs.Element;
                        wbData.ProjectId  = wbs.ProjectId;
                        wbData.CreatedAt  = DateTime.Now;
                        wbData.CreatedBy  = 1; //to do
                        _context.WorkBreakdown.Add(wbData);
                        _context.SaveChanges();
                    }
                }
                AuditLogs audit = new AuditLogs()
                {
                    Action    = "WBS Insert",
                    Message   = string.Format("WBS BulkUpload completed  Succussfully"),
                    CreatedBy = null, //TODO:will get from session
                };
                _commonRepo.AuditLog(audit);
                return(new ResponseMessage()
                {
                    Message = "WBS Bulk Upload Completed successfully.",
                });
            } catch (Exception ex) {
                throw ex;
            }
        }
예제 #4
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (!context.ActionArguments.Any(m => typeof(RequestViewModel).IsInstanceOfType(m.Value)) ||
                !context.HttpContext.Request.Headers.Keys.Contains("HeadConten") ||
                !context.HttpContext.Request.Headers.Keys.Contains("Client")
                )
            {
                return;
            }
            var vItem = new AuditLogs
            {
                Action     = context.ActionDescriptor.DisplayName,
                Path       = context.HttpContext.Request.Path,
                Requset    = JsonHelper.SerializeObject(context.ActionArguments),
                Time       = DateTime.Now.ToLocalTime(),
                Stopwatch  = Stopwatch.StartNew(),
                HeadConten = context.HttpContext.Request.Headers["HeadConten"],
                ClientInfo = context.HttpContext.Request.Headers["Client"],
                Ip         = context.HttpContext.Request.Headers["X-Original-For"].FirstOrDefault(),
            };

            context.HttpContext.Items["auditlog"] = vItem;
        }
예제 #5
0
        public void WriteLog(AuditLogs auditLogs, string type)
        {
            StringBuilder sb = new StringBuilder();

            if (type == "request")
            {
                sb.Append(DataConversion.ConvertYMDHMS(DateTime.Now.ToString()));
                sb.Append(Environment.NewLine);
                sb.Append("Method:" + " " + auditLogs.Method);
                sb.Append("Url:" + " " + auditLogs.URL);
                sb.Append("Controller:" + " " + auditLogs.ControllerName);
                sb.Append("Action:" + " " + auditLogs.Action);
                sb.Append("Request Parameter:" + " " + auditLogs.RequestParameter);
                sb.Append("LogDate:" + " " + DataConversion.ConvertDateYMD(DateTime.Now.ToString()));
                sb.Append("LogTime:" + " " + DateTime.Now.ToLongTimeString());
            }
            else
            {
                sb.Append("log something");
            }
            //File.AppendAllText(LogFilePath + DataConversion.ConvertDateYMD(DateTime.Now.ToShortDateString()) + "-api.txt", sb.ToString());
            sb.Clear();
        }
예제 #6
0
        public void SaveResonseAuditLog(HttpActionExecutedContext context)
        {
            string    requestParameter  = context.Request.Content.ReadAsStringAsync().Result;
            string    responseParameter = context.Response.Content.ReadAsStringAsync().Result;
            AuditLogs auditLogs         = new AuditLogs();

            auditLogs.Method           = context.Request.Method.ToString();
            auditLogs.URL              = context.Request.RequestUri.AbsoluteUri;
            auditLogs.ControllerName   = context.ActionContext.ControllerContext.ControllerDescriptor.ControllerName;
            auditLogs.Action           = context.ActionContext.ActionDescriptor.ActionName;
            auditLogs.StatusCode       = context.Response.ToString().Split(',')[0].ToString().Split(':')[1];
            auditLogs.Status           = context.Response.ReasonPhrase;
            auditLogs.RequestParameter = JSONHelper.ToJSON(requestParameter);
            auditLogs.Response         = JSONHelper.ToJSON(responseParameter);
            auditLogs.LogDate          = DataConversion.ConvertYMDHMS(DateTime.Now.ToString());
            auditLogs.LogTime          = DateTime.Now.ToLongTimeString();
            var auditLogsDoc = new Document <AuditLogs>()
            {
                Id      = "Log_Response_" + DataConversion.ConvertYMDHMS(DateTime.Now.ToString()),
                Content = auditLogs
            };
            var result = _bucket.Insert(auditLogsDoc);
        }
예제 #7
0
        public ResponseMessage AddUser(UserDetails userDetails)
        {
            ResponseMessage responseMessage = new ResponseMessage();

            try {
                userDetails.userId = 0;
                if (_context.Users.Where(x => x.Email == userDetails.email && x.IsDelete == false).Count() > 0)
                {
                    throw new ValueNotFoundException("Email Id already exist.");
                }
                else if (_context.Users.Where(x => x.PsNo == userDetails.userName && x.IsDelete == false).Count() > 0)
                {
                    throw new ValueNotFoundException("UserName already exist.");
                }
                else
                {
                    Users userDtls = _mapper.Map <Users> (userDetails);
                    userDtls.IsActive = true;
                    _context.Users.Add(userDtls);
                    _context.SaveChanges();
                    AuditLogs audit = new AuditLogs()
                    {
                        Action    = "User",
                        Message   = string.Format("New User added Succussfully {0}", userDetails.userName),
                        CreatedAt = DateTime.Now,
                        CreatedBy = userDetails.createdBy
                    };
                    _commonRepo.AuditLog(audit);
                    return(responseMessage = new ResponseMessage()
                    {
                        Message = "User added successfully."
                    });
                }
            } catch (Exception ex) {
                throw ex;
            }
        }
        /// <summary>
        /// Describe your member here.
        /// </summary>
        public override Task TokenEndpointResponse(OAuthTokenEndpointResponseContext context)
        {
            bool flag = false;

            try
            {
                DateTime expiry = DateTime.Now.AddMinutes(context.Options.AccessTokenExpireTimeSpan.TotalMinutes);
                context.AdditionalResponseParameters.Add("expiry", expiry.ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'"));
                flag = AuditLogs.insertCustomerAuthCall(ld.id.ToString(), ld.first_name + " " + ld.last_name, context.Request.Host.Value, ld.email_address, ld.zip, ld.phone_number, context.AccessToken, HttpContext.Current.Request.UserHostAddress, (!ld.is_two_step_enabled).ToString(), ld.verificationCode);
                //flag = AuditLogs.insertCustomerAuthCall(ld.last_name + " " + ld.first_name, ld.UserID, context.Request.Host.Value, ld.DBServerID, ld.EmailID, ld.MasterCustomerID, ld.Speciality, ld.zip, ld.PhoneNumber, context.AccessToken, ld.UserIPAddress, (!ld.IS2wayEnabled).ToString(), ld.verificationCode, ld.User_Type);
            }
            catch (Exception ex)
            {
                FileLogger.AppendLog("POWebAPI", LogType.Error, "POWebAPI >> ApplicationOAuthProvider >> GrantResourceOwnerCredentials >> ", ex.Message);
            }
            if (flag)
            {
                return(base.TokenEndpointResponse(context));
            }
            else
            {
                return(null);
            }
        }
예제 #9
0
        private Task OnAfterSaveChanges(List <AuditEntry> auditEntries)
        {
            if (auditEntries == null || auditEntries.Count == 0)
            {
                return(Task.CompletedTask);
            }

            foreach (var auditEntry in auditEntries)
            {
                foreach (var prop in auditEntry.TemporaryProperties)
                {
                    if (prop.Metadata.IsPrimaryKey())
                    {
                        auditEntry.KeyValues[prop.Metadata.Name] = prop.CurrentValue;
                    }
                    else
                    {
                        auditEntry.NewValues[prop.Metadata.Name] = prop.CurrentValue;
                    }
                }
                AuditLogs.Add(auditEntry.ToAudit());
            }
            return(SaveChangesAsync());
        }
예제 #10
0
 /// <summary>
 /// Does this object have any dependent objects? (If it does have dependent objects, these would need to be deleted before this object could be deleted.)
 /// </summary>
 /// <returns></returns>
 public bool HasDependentObjects()
 {
     return(AuditLogs.Any() || DelineationsWhereYouAreTheVerifiedByPerson.Any() || DelineationStagingsWhereYouAreTheUploadedByPerson.Any() || FieldVisitsWhereYouAreThePerformedByPerson.Any() || FileResourcesWhereYouAreTheCreatePerson.Any() || LandUseBlockStagingsWhereYouAreTheUploadedByPerson.Any() || Notifications.Any() || OnlandVisualTrashAssessmentsWhereYouAreTheCreatedByPerson.Any() || OrganizationsWhereYouAreThePrimaryContactPerson.Any() || RegionalSubbasinRevisionRequestsWhereYouAreTheClosedByPerson.Any() || RegionalSubbasinRevisionRequestsWhereYouAreTheRequestPerson.Any() || StormwaterJurisdictionPeople.Any() || SupportRequestLogsWhereYouAreTheRequestPerson.Any() || TrashGeneratingUnitAdjustmentsWhereYouAreTheAdjustedByPerson.Any() || TreatmentBMPsWhereYouAreTheInventoryVerifiedByPerson.Any() || WaterQualityManagementPlanVerifiesWhereYouAreTheLastEditedByPerson.Any());
 }
예제 #11
0
        // private so I didn't have to write the warning above twice.

        private int SaveChangesImpl(Person person, TransactionScope scope)
        {
            // We have Configuration.AutoDetectChangesEnabled turned off by default instead of it being true out of the box
            // We only need to detect changes when we know we are saving
            ChangeTracker.DetectChanges();

            var dbEntityEntries = ChangeTracker.Entries().ToList();
            var addedEntries    = dbEntityEntries.Where(e => e.State == EntityState.Added).ToList();
            var modifiedEntries = dbEntityEntries.Where(e => e.State == EntityState.Deleted || e.State == EntityState.Modified).ToList();
            var objectContext   = GetObjectContext();

            foreach (var entry in modifiedEntries)
            {
                // For each changed record, get the audit record entries and add them
                var auditRecordsForChange = AuditLog.GetAuditLogRecordsForModifiedOrDeleted(entry, person, objectContext);
                AuditLogs.AddRange(auditRecordsForChange);
            }

            int changes;

            try
            {
                changes = base.SaveChanges();
            }
            catch (DbEntityValidationException ex)
            {
                var sb = new StringBuilder();

                foreach (var failure in ex.EntityValidationErrors)
                {
                    sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType());
                    foreach (var error in failure.ValidationErrors)
                    {
                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                        sb.AppendLine();
                    }
                }

                throw new DbEntityValidationException(
                          "Entity Validation Failed - errors follow:\n" +
                          sb.ToString(), ex
                          ); // Add the original exception as the innerException
            }

            foreach (var entry in addedEntries)
            {
                // For each added record, get the audit record entries and add them
                var auditRecordsForChange = AuditLog.GetAuditLogRecordsForAdded(entry, person, objectContext);
                AuditLogs.AddRange(auditRecordsForChange);
            }
            // we need to save the audit log entries now
            try
            {
                base.SaveChanges();
            }
            catch (DbEntityValidationException validationException)
            {
                Console.WriteLine(validationException);
                throw;
            }

            scope.Complete();
            return(changes);
        }
예제 #12
0
        protected async override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            DateTime dtProcessStartTime = DateTime.Now;
            string   access_token       = string.Empty;
            string   UserEmail          = string.Empty;
            string   ReqData            = string.Empty;
            var      response           = new HttpResponseMessage(HttpStatusCode.Unauthorized);

            try
            {
                ReqData = await request.Content.ReadAsStringAsync();
            }
            catch { }
            /****************************** Authorization header check *************************************/

            if (request.Headers.Authorization != null && request.Headers.Authorization.Scheme.ToLower().Equals("bearer"))
            {
                bool Authenticated = false;
                try
                {
                    access_token = request.Headers.Authorization.Parameter;
                    DBServerIdentification objData = new DBServerIdentification();

                    objData = AuditLogs.getIdentificationInfo1(access_token, HttpContext.Current.Request.UserHostAddress, request.RequestUri.AbsolutePath.ToString().ToLower().EndsWith("/verify") ? true : false);
                    if (objData.Status == "Success")
                    {
                        Authenticated = true;
                        request.Properties.Add(Constants.IdentificationInfo, objData);
                    }
                    else
                    {
                        response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
                    }
                }
                catch (Exception ex)
                {
                    response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
                }

                if (Authenticated)
                {
                    response = await base.SendAsync(request, cancellationToken);
                }
            }
            else
            /************************************************/
            {
                response = await base.SendAsync(request, cancellationToken);
            }
            if (!(request.RequestUri.LocalPath.ToString().Equals(@"/") || request.RequestUri.LocalPath.ToString().Length == 0))
            {
                DateTime dtProcessEndTime = DateTime.Now;
                long?    bodylength       = 0;
                long?    headerlength     = 0;
                if (response.Content != null)
                {
                    await response.Content.LoadIntoBufferAsync();

                    bodylength   = response.Content.Headers.ContentLength;
                    headerlength = response.Headers.ToString().Length;
                }
                try
                {
                    string resContaint = string.Empty;
                    try
                    {
                        resContaint = await response.Content.ReadAsStringAsync();
                    }
                    catch { }
                    await AuditLogs.InsertRequestCall(access_token == null? "" : access_token, request.RequestUri.AbsoluteUri == null? "" : request.RequestUri.AbsoluteUri, request.Headers.ToString(), ReqData == null? "" : ReqData, resContaint, response.StatusCode.ToString(), bodylength == null? "" : bodylength.ToString(), response.Headers == null? "" : response.Headers.ToString(), dtProcessStartTime.ToString("yyyy-MM-dd HH:mm:ss"), dtProcessEndTime.ToString("yyyy-MM-dd HH:mm:ss"), response.StatusCode.GetHashCode());
                }
                catch { }
            }
            return(response);
        }
예제 #13
0
        /// <summary>
        /// Dependent type names of this entity
        /// </summary>
        public void DeleteChildren(DatabaseEntities dbContext)
        {
            foreach (var x in AgreementPeople.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in AuditLogs.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in FileResourcesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GisUploadAttemptsWhereYouAreTheGisUploadAttemptCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationsWhereYouAreTheGrantManager.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationAwardPersonnelAndBenefitsLineItems.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationAwardTravelLineItems.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationChangeLogsWhereYouAreTheChangePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationNotesWhereYouAreTheCreatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationNotesWhereYouAreTheLastUpdatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationNoteInternalsWhereYouAreTheCreatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationNoteInternalsWhereYouAreTheLastUpdatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantAllocationProgramManagers.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantModificationNoteInternalsWhereYouAreTheCreatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantModificationNoteInternalsWhereYouAreTheLastUpdatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantNotesWhereYouAreTheCreatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantNotesWhereYouAreTheLastUpdatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantNoteInternalsWhereYouAreTheCreatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in GrantNoteInternalsWhereYouAreTheLastUpdatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in InteractionEventsWhereYouAreTheStaffPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in InteractionEventContacts.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in InvoicesWhereYouAreThePreparedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in Notifications.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in OrganizationsWhereYouAreThePrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PerformanceMeasureNotesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PerformanceMeasureNotesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PeopleWhereYouAreTheAddedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonAllowedAuthenticators.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonStewardOrganizations.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonStewardRegions.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonStewardTaxonomyBranches.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProgramsWhereYouAreTheProgramCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProgramsWhereYouAreTheProgramLastUpdatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProgramsWhereYouAreTheProgramPrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectsWhereYouAreTheProposingPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectsWhereYouAreTheReviewedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectInternalNotesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectInternalNotesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectLocationStagings.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectLocationStagingUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNotesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNotesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNoteUpdatesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNoteUpdatesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectPeople.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectPersonUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectUpdateBatchesWhereYouAreTheLastUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectUpdateHistoriesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in SupportRequestLogsWhereYouAreTheRequestPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in SystemAttributesWhereYouAreThePrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }
        }
        private void OnBeforeSaveChanges(string userId)
        {
            ChangeTracker.DetectChanges();
            foreach (var entry in ChangeTracker.Entries <AuditableEntity>())
            {
                if (entry.State == EntityState.Added)
                {
                    entry.Entity.CreatedById  = userId;
                    entry.Entity.CreatedOnUtc = DateTime.UtcNow;
                }
                else if (entry.State == EntityState.Modified)
                {
                    entry.Entity.LastModifiedById  = userId;
                    entry.Entity.LastModifiedOnUtc = DateTime.UtcNow;
                }
            }
            var auditEntries = new List <AuditEntry>();

            foreach (var entry in ChangeTracker.Entries())
            {
                if (entry.Entity is Audit || entry.State == EntityState.Detached || entry.State == EntityState.Unchanged)
                {
                    continue;
                }
                var auditEntry = new AuditEntry(entry);
                auditEntry.TableName = entry.Entity.GetType().Name;
                auditEntry.UserId    = userId;
                auditEntries.Add(auditEntry);
                foreach (var property in entry.Properties)
                {
                    string propertyName = property.Metadata.Name;
                    if (property.Metadata.IsPrimaryKey())
                    {
                        auditEntry.KeyValues[propertyName] = property.CurrentValue;
                        continue;
                    }
                    switch (entry.State)
                    {
                    case EntityState.Added:
                        auditEntry.AuditType = AuditType.Create;
                        auditEntry.NewValues[propertyName] = property.CurrentValue;
                        break;

                    case EntityState.Deleted:
                        auditEntry.AuditType = AuditType.Delete;
                        auditEntry.OldValues[propertyName] = property.OriginalValue;
                        break;

                    case EntityState.Modified:
                        if (property.IsModified)
                        {
                            auditEntry.ChangedColumns.Add(propertyName);
                            auditEntry.AuditType = AuditType.Update;
                            auditEntry.OldValues[propertyName] = property.OriginalValue;
                            auditEntry.NewValues[propertyName] = property.CurrentValue;
                        }
                        break;
                    }
                }
            }
            foreach (var auditEntry in auditEntries)
            {
                AuditLogs.Add(auditEntry.ToAudit());
            }
        }
예제 #15
0
 /// <summary>
 /// Does this object have any dependent objects? (If it does have dependent objects, these would need to be deleted before this object could be deleted.)
 /// </summary>
 /// <returns></returns>
 public bool HasDependentObjects()
 {
     return(AgreementPeople.Any() || AuditLogs.Any() || FileResourcesWhereYouAreTheCreatePerson.Any() || GisUploadAttemptsWhereYouAreTheGisUploadAttemptCreatePerson.Any() || GrantAllocationsWhereYouAreTheGrantManager.Any() || GrantAllocationAwardPersonnelAndBenefitsLineItems.Any() || GrantAllocationAwardTravelLineItems.Any() || GrantAllocationChangeLogsWhereYouAreTheChangePerson.Any() || GrantAllocationNotesWhereYouAreTheCreatedByPerson.Any() || GrantAllocationNotesWhereYouAreTheLastUpdatedByPerson.Any() || GrantAllocationNoteInternalsWhereYouAreTheCreatedByPerson.Any() || GrantAllocationNoteInternalsWhereYouAreTheLastUpdatedByPerson.Any() || GrantAllocationProgramManagers.Any() || GrantModificationNoteInternalsWhereYouAreTheCreatedByPerson.Any() || GrantModificationNoteInternalsWhereYouAreTheLastUpdatedByPerson.Any() || GrantNotesWhereYouAreTheCreatedByPerson.Any() || GrantNotesWhereYouAreTheLastUpdatedByPerson.Any() || GrantNoteInternalsWhereYouAreTheCreatedByPerson.Any() || GrantNoteInternalsWhereYouAreTheLastUpdatedByPerson.Any() || InteractionEventsWhereYouAreTheStaffPerson.Any() || InteractionEventContacts.Any() || InvoicesWhereYouAreThePreparedByPerson.Any() || Notifications.Any() || OrganizationsWhereYouAreThePrimaryContactPerson.Any() || PerformanceMeasureNotesWhereYouAreTheCreatePerson.Any() || PerformanceMeasureNotesWhereYouAreTheUpdatePerson.Any() || PeopleWhereYouAreTheAddedByPerson.Any() || PersonAllowedAuthenticators.Any() || PersonStewardOrganizations.Any() || PersonStewardRegions.Any() || PersonStewardTaxonomyBranches.Any() || ProgramsWhereYouAreTheProgramCreatePerson.Any() || ProgramsWhereYouAreTheProgramLastUpdatedByPerson.Any() || ProgramsWhereYouAreTheProgramPrimaryContactPerson.Any() || ProjectsWhereYouAreTheProposingPerson.Any() || ProjectsWhereYouAreTheReviewedByPerson.Any() || ProjectInternalNotesWhereYouAreTheCreatePerson.Any() || ProjectInternalNotesWhereYouAreTheUpdatePerson.Any() || ProjectLocationStagings.Any() || ProjectLocationStagingUpdates.Any() || ProjectNotesWhereYouAreTheCreatePerson.Any() || ProjectNotesWhereYouAreTheUpdatePerson.Any() || ProjectNoteUpdatesWhereYouAreTheCreatePerson.Any() || ProjectNoteUpdatesWhereYouAreTheUpdatePerson.Any() || ProjectPeople.Any() || ProjectPersonUpdates.Any() || ProjectUpdateBatchesWhereYouAreTheLastUpdatePerson.Any() || ProjectUpdateHistoriesWhereYouAreTheUpdatePerson.Any() || SupportRequestLogsWhereYouAreTheRequestPerson.Any() || SystemAttributesWhereYouAreThePrimaryContactPerson.Any());
 }
예제 #16
0
        /// <summary>
        /// Active Dependent type names of this object
        /// </summary>
        public List <string> DependentObjectNames()
        {
            var dependentObjects = new List <string>();

            if (AgreementPeople.Any())
            {
                dependentObjects.Add(typeof(AgreementPerson).Name);
            }

            if (AuditLogs.Any())
            {
                dependentObjects.Add(typeof(AuditLog).Name);
            }

            if (FileResourcesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(FileResource).Name);
            }

            if (GisUploadAttemptsWhereYouAreTheGisUploadAttemptCreatePerson.Any())
            {
                dependentObjects.Add(typeof(GisUploadAttempt).Name);
            }

            if (GrantAllocationsWhereYouAreTheGrantManager.Any())
            {
                dependentObjects.Add(typeof(GrantAllocation).Name);
            }

            if (GrantAllocationAwardPersonnelAndBenefitsLineItems.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationAwardPersonnelAndBenefitsLineItem).Name);
            }

            if (GrantAllocationAwardTravelLineItems.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationAwardTravelLineItem).Name);
            }

            if (GrantAllocationChangeLogsWhereYouAreTheChangePerson.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationChangeLog).Name);
            }

            if (GrantAllocationNotesWhereYouAreTheCreatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationNote).Name);
            }

            if (GrantAllocationNotesWhereYouAreTheLastUpdatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationNote).Name);
            }

            if (GrantAllocationNoteInternalsWhereYouAreTheCreatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationNoteInternal).Name);
            }

            if (GrantAllocationNoteInternalsWhereYouAreTheLastUpdatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationNoteInternal).Name);
            }

            if (GrantAllocationProgramManagers.Any())
            {
                dependentObjects.Add(typeof(GrantAllocationProgramManager).Name);
            }

            if (GrantModificationNoteInternalsWhereYouAreTheCreatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantModificationNoteInternal).Name);
            }

            if (GrantModificationNoteInternalsWhereYouAreTheLastUpdatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantModificationNoteInternal).Name);
            }

            if (GrantNotesWhereYouAreTheCreatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantNote).Name);
            }

            if (GrantNotesWhereYouAreTheLastUpdatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantNote).Name);
            }

            if (GrantNoteInternalsWhereYouAreTheCreatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantNoteInternal).Name);
            }

            if (GrantNoteInternalsWhereYouAreTheLastUpdatedByPerson.Any())
            {
                dependentObjects.Add(typeof(GrantNoteInternal).Name);
            }

            if (InteractionEventsWhereYouAreTheStaffPerson.Any())
            {
                dependentObjects.Add(typeof(InteractionEvent).Name);
            }

            if (InteractionEventContacts.Any())
            {
                dependentObjects.Add(typeof(InteractionEventContact).Name);
            }

            if (InvoicesWhereYouAreThePreparedByPerson.Any())
            {
                dependentObjects.Add(typeof(Invoice).Name);
            }

            if (Notifications.Any())
            {
                dependentObjects.Add(typeof(Notification).Name);
            }

            if (OrganizationsWhereYouAreThePrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(Organization).Name);
            }

            if (PerformanceMeasureNotesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(PerformanceMeasureNote).Name);
            }

            if (PerformanceMeasureNotesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(PerformanceMeasureNote).Name);
            }

            if (PeopleWhereYouAreTheAddedByPerson.Any())
            {
                dependentObjects.Add(typeof(Person).Name);
            }

            if (PersonAllowedAuthenticators.Any())
            {
                dependentObjects.Add(typeof(PersonAllowedAuthenticator).Name);
            }

            if (PersonStewardOrganizations.Any())
            {
                dependentObjects.Add(typeof(PersonStewardOrganization).Name);
            }

            if (PersonStewardRegions.Any())
            {
                dependentObjects.Add(typeof(PersonStewardRegion).Name);
            }

            if (PersonStewardTaxonomyBranches.Any())
            {
                dependentObjects.Add(typeof(PersonStewardTaxonomyBranch).Name);
            }

            if (ProgramsWhereYouAreTheProgramCreatePerson.Any())
            {
                dependentObjects.Add(typeof(Program).Name);
            }

            if (ProgramsWhereYouAreTheProgramLastUpdatedByPerson.Any())
            {
                dependentObjects.Add(typeof(Program).Name);
            }

            if (ProgramsWhereYouAreTheProgramPrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(Program).Name);
            }

            if (ProjectsWhereYouAreTheProposingPerson.Any())
            {
                dependentObjects.Add(typeof(Project).Name);
            }

            if (ProjectsWhereYouAreTheReviewedByPerson.Any())
            {
                dependentObjects.Add(typeof(Project).Name);
            }

            if (ProjectInternalNotesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectInternalNote).Name);
            }

            if (ProjectInternalNotesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectInternalNote).Name);
            }

            if (ProjectLocationStagings.Any())
            {
                dependentObjects.Add(typeof(ProjectLocationStaging).Name);
            }

            if (ProjectLocationStagingUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectLocationStagingUpdate).Name);
            }

            if (ProjectNotesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNote).Name);
            }

            if (ProjectNotesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNote).Name);
            }

            if (ProjectNoteUpdatesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNoteUpdate).Name);
            }

            if (ProjectNoteUpdatesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNoteUpdate).Name);
            }

            if (ProjectPeople.Any())
            {
                dependentObjects.Add(typeof(ProjectPerson).Name);
            }

            if (ProjectPersonUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectPersonUpdate).Name);
            }

            if (ProjectUpdateBatchesWhereYouAreTheLastUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectUpdateBatch).Name);
            }

            if (ProjectUpdateHistoriesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectUpdateHistory).Name);
            }

            if (SupportRequestLogsWhereYouAreTheRequestPerson.Any())
            {
                dependentObjects.Add(typeof(SupportRequestLog).Name);
            }

            if (SystemAttributesWhereYouAreThePrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(SystemAttribute).Name);
            }
            return(dependentObjects.Distinct().ToList());
        }
예제 #17
0
        /// <summary>
        /// Active Dependent type names of this object
        /// </summary>
        public List <string> DependentObjectNames()
        {
            var dependentObjects = new List <string>();

            if (AuditLogs.Any())
            {
                dependentObjects.Add(typeof(AuditLog).Name);
            }

            if (DocumentLibraryDocumentsWhereYouAreTheLastUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(DocumentLibraryDocument).Name);
            }

            if (EvaluationsWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(Evaluation).Name);
            }

            if (FileResourceInfosWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(FileResourceInfo).Name);
            }

            if (FirmaSessions.Any())
            {
                dependentObjects.Add(typeof(FirmaSession).Name);
            }

            if (FirmaSessionsWhereYouAreTheOriginalPerson.Any())
            {
                dependentObjects.Add(typeof(FirmaSession).Name);
            }

            if (ImportExternalProjectStagingsWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ImportExternalProjectStaging).Name);
            }

            if (Notifications.Any())
            {
                dependentObjects.Add(typeof(Notification).Name);
            }

            if (OrganizationsWhereYouAreThePrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(Organization).Name);
            }

            if (PerformanceMeasureNotesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(PerformanceMeasureNote).Name);
            }

            if (PerformanceMeasureNotesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(PerformanceMeasureNote).Name);
            }

            if ((PersonLoginAccount != null))
            {
                dependentObjects.Add(typeof(PersonLoginAccount).Name);
            }

            if (PersonSettingGridColumnSettings.Any())
            {
                dependentObjects.Add(typeof(PersonSettingGridColumnSetting).Name);
            }

            if (PersonStewardGeospatialAreas.Any())
            {
                dependentObjects.Add(typeof(PersonStewardGeospatialArea).Name);
            }

            if (PersonStewardOrganizations.Any())
            {
                dependentObjects.Add(typeof(PersonStewardOrganization).Name);
            }

            if (PersonStewardTaxonomyBranches.Any())
            {
                dependentObjects.Add(typeof(PersonStewardTaxonomyBranch).Name);
            }

            if (ProjectsWhereYouAreThePrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(Project).Name);
            }

            if (ProjectsWhereYouAreTheProposingPerson.Any())
            {
                dependentObjects.Add(typeof(Project).Name);
            }

            if (ProjectsWhereYouAreTheReviewedByPerson.Any())
            {
                dependentObjects.Add(typeof(Project).Name);
            }

            if (ProjectsWhereYouAreTheSubmittedByPerson.Any())
            {
                dependentObjects.Add(typeof(Project).Name);
            }

            if (ProjectContactsWhereYouAreTheContact.Any())
            {
                dependentObjects.Add(typeof(ProjectContact).Name);
            }

            if (ProjectContactUpdatesWhereYouAreTheContact.Any())
            {
                dependentObjects.Add(typeof(ProjectContactUpdate).Name);
            }

            if (ProjectInternalNotesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectInternalNote).Name);
            }

            if (ProjectInternalNotesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectInternalNote).Name);
            }

            if (ProjectLocationStagings.Any())
            {
                dependentObjects.Add(typeof(ProjectLocationStaging).Name);
            }

            if (ProjectLocationStagingUpdates.Any())
            {
                dependentObjects.Add(typeof(ProjectLocationStagingUpdate).Name);
            }

            if (ProjectNotesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNote).Name);
            }

            if (ProjectNotesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNote).Name);
            }

            if (ProjectNoteUpdatesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNoteUpdate).Name);
            }

            if (ProjectNoteUpdatesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectNoteUpdate).Name);
            }

            if (ProjectProjectStatusesWhereYouAreTheProjectProjectStatusCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectProjectStatus).Name);
            }

            if (ProjectProjectStatusesWhereYouAreTheProjectProjectStatusLastEditedPerson.Any())
            {
                dependentObjects.Add(typeof(ProjectProjectStatus).Name);
            }

            if (ProjectUpdatesWhereYouAreThePrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(ProjectUpdate).Name);
            }

            if (ProjectUpdateBatchesWhereYouAreTheLastUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectUpdateBatch).Name);
            }

            if (ProjectUpdateHistoriesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ProjectUpdateHistory).Name);
            }

            if (ReleaseNotesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(ReleaseNote).Name);
            }

            if (ReleaseNotesWhereYouAreTheUpdatePerson.Any())
            {
                dependentObjects.Add(typeof(ReleaseNote).Name);
            }

            if (SupportRequestLogsWhereYouAreTheRequestPerson.Any())
            {
                dependentObjects.Add(typeof(SupportRequestLog).Name);
            }

            if (TechnicalAssistanceRequests.Any())
            {
                dependentObjects.Add(typeof(TechnicalAssistanceRequest).Name);
            }

            if (TechnicalAssistanceRequestUpdates.Any())
            {
                dependentObjects.Add(typeof(TechnicalAssistanceRequestUpdate).Name);
            }

            if (TenantAttributesWhereYouAreThePrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(TenantAttribute).Name);
            }
            return(dependentObjects.Distinct().ToList());
        }
예제 #18
0
        /// <summary>
        /// Dependent type names of this entity
        /// </summary>
        public void DeleteChildren(DatabaseEntities dbContext)
        {
            foreach (var x in AuditLogs.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in DocumentLibraryDocumentsWhereYouAreTheLastUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in EvaluationsWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in FileResourceInfosWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in FirmaSessions.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in FirmaSessionsWhereYouAreTheOriginalPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ImportExternalProjectStagingsWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in Notifications.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in OrganizationsWhereYouAreThePrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PerformanceMeasureNotesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PerformanceMeasureNotesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonLoginAccounts.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonSettingGridColumnSettings.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonStewardGeospatialAreas.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonStewardOrganizations.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in PersonStewardTaxonomyBranches.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectsWhereYouAreThePrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectsWhereYouAreTheProposingPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectsWhereYouAreTheReviewedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectsWhereYouAreTheSubmittedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectContactsWhereYouAreTheContact.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectContactUpdatesWhereYouAreTheContact.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectInternalNotesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectInternalNotesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectLocationStagings.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectLocationStagingUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNotesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNotesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNoteUpdatesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectNoteUpdatesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectProjectStatusesWhereYouAreTheProjectProjectStatusCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectProjectStatusesWhereYouAreTheProjectProjectStatusLastEditedPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectUpdatesWhereYouAreThePrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectUpdateBatchesWhereYouAreTheLastUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ProjectUpdateHistoriesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ReleaseNotesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in ReleaseNotesWhereYouAreTheUpdatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in SupportRequestLogsWhereYouAreTheRequestPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in TechnicalAssistanceRequests.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in TechnicalAssistanceRequestUpdates.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in TenantAttributesWhereYouAreThePrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }
        }
예제 #19
0
        private void TrackChanges()
        {
            var modifiedEntities = ChangeTracker.Entries()
                                   .Where(p => p.State == EntityState.Modified).ToList();

            var now = DateTime.UtcNow;

            foreach (var change in modifiedEntities)
            {
                if (change.Entity is AuditedEntity)
                {
                    var primaryKey = GetPrimaryKeyValue(change);
                    var entityName = GetTableName(change);

                    foreach (var prop in change.OriginalValues.PropertyNames)
                    {
                        if (prop == "ModifyUser" || prop == "ModifyDate")
                        {
                            continue;
                        }
                        string originalValue = string.Empty;
                        string currentValue  = string.Empty;
                        if (change.OriginalValues[prop] != null)
                        {
                            originalValue = change.OriginalValues[prop].ToString();
                        }

                        if (change.CurrentValues[prop] != null)
                        {
                            currentValue = change.CurrentValues[prop].ToString();
                        }
                        if (originalValue != currentValue)
                        {
                            AuditLog log = new AuditLog()
                            {
                                EntityName      = entityName,
                                PrimaryKeyValue = (int)primaryKey,
                                PropertyName    = prop,
                                OldValue        = originalValue,
                                NewValue        = currentValue,
                                DateChanged     = now,
                                UserName        = KontoGlobals.UserName,
                                MenuId          = KontoGlobals.MenuId
                            };

                            log.EntryMode = Convert.ToBoolean(change.Property("IsDeleted").CurrentValue)
                                ? "Delete"
                                : "Edit";

                            AuditLogs.Add(log);
                        }
                    }
                }
            }

            foreach (var entry in this.ChangeTracker.Entries().Where(e => e.State == EntityState.Added || e.State == EntityState.Modified))
            {
                if (entry.Entity is AuditedEntity)
                {
                    var auditable = entry.Entity as AuditedEntity;
                    if (entry.State == EntityState.Added)
                    {
                        auditable.RowId = Guid.NewGuid();
                        //auditable.CreatedBy = UserProvider;//
                        auditable.CreateDate = TimestampProvider();
                        auditable.CreateUser = KontoGlobals.UserName;
                        //auditable.UpdatedOn = TimestampProvider();
                    }
                    else
                    {
                        //auditable.UpdatedBy = UserProvider;
                        auditable.ModifyUser = KontoGlobals.UserName;
                        auditable.ModifyDate = TimestampProvider();
                    }
                    auditable.IpAddress = UserIpAddress;
                }
            }
        }
예제 #20
0
 /// <summary>
 /// Does this object have any dependent objects? (If it does have dependent objects, these would need to be deleted before this object could be deleted.)
 /// </summary>
 /// <returns></returns>
 public bool HasDependentObjects()
 {
     return(AuditLogs.Any() || DocumentLibraryDocumentsWhereYouAreTheLastUpdatePerson.Any() || EvaluationsWhereYouAreTheCreatePerson.Any() || FileResourceInfosWhereYouAreTheCreatePerson.Any() || FirmaSessions.Any() || FirmaSessionsWhereYouAreTheOriginalPerson.Any() || ImportExternalProjectStagingsWhereYouAreTheCreatePerson.Any() || Notifications.Any() || OrganizationsWhereYouAreThePrimaryContactPerson.Any() || PerformanceMeasureNotesWhereYouAreTheCreatePerson.Any() || PerformanceMeasureNotesWhereYouAreTheUpdatePerson.Any() || (PersonLoginAccount != null) || PersonSettingGridColumnSettings.Any() || PersonStewardGeospatialAreas.Any() || PersonStewardOrganizations.Any() || PersonStewardTaxonomyBranches.Any() || ProjectsWhereYouAreThePrimaryContactPerson.Any() || ProjectsWhereYouAreTheProposingPerson.Any() || ProjectsWhereYouAreTheReviewedByPerson.Any() || ProjectsWhereYouAreTheSubmittedByPerson.Any() || ProjectContactsWhereYouAreTheContact.Any() || ProjectContactUpdatesWhereYouAreTheContact.Any() || ProjectInternalNotesWhereYouAreTheCreatePerson.Any() || ProjectInternalNotesWhereYouAreTheUpdatePerson.Any() || ProjectLocationStagings.Any() || ProjectLocationStagingUpdates.Any() || ProjectNotesWhereYouAreTheCreatePerson.Any() || ProjectNotesWhereYouAreTheUpdatePerson.Any() || ProjectNoteUpdatesWhereYouAreTheCreatePerson.Any() || ProjectNoteUpdatesWhereYouAreTheUpdatePerson.Any() || ProjectProjectStatusesWhereYouAreTheProjectProjectStatusCreatePerson.Any() || ProjectProjectStatusesWhereYouAreTheProjectProjectStatusLastEditedPerson.Any() || ProjectUpdatesWhereYouAreThePrimaryContactPerson.Any() || ProjectUpdateBatchesWhereYouAreTheLastUpdatePerson.Any() || ProjectUpdateHistoriesWhereYouAreTheUpdatePerson.Any() || ReleaseNotesWhereYouAreTheCreatePerson.Any() || ReleaseNotesWhereYouAreTheUpdatePerson.Any() || SupportRequestLogsWhereYouAreTheRequestPerson.Any() || TechnicalAssistanceRequests.Any() || TechnicalAssistanceRequestUpdates.Any() || TenantAttributesWhereYouAreThePrimaryContactPerson.Any());
 }
예제 #21
0
        private List <AuditEntry> OnBeforeSaveChanges(string userId)
        {
            ChangeTracker.DetectChanges();
            var auditEntries = new List <AuditEntry>();

            foreach (var entry in ChangeTracker.Entries())
            {
                if (entry.Entity is Audit || entry.State == EntityState.Detached || entry.State == EntityState.Unchanged)
                {
                    continue;
                }

                var auditEntry = new AuditEntry(entry);
                auditEntry.TableName = entry.Entity.GetType().Name;
                auditEntry.UserId    = userId;
                auditEntries.Add(auditEntry);
                foreach (var property in entry.Properties)
                {
                    if (property.IsTemporary)
                    {
                        auditEntry.TemporaryProperties.Add(property);
                        continue;
                    }

                    string propertyName = property.Metadata.Name;
                    if (property.Metadata.IsPrimaryKey())
                    {
                        auditEntry.KeyValues[propertyName] = property.CurrentValue;
                        continue;
                    }

                    switch (entry.State)
                    {
                    case EntityState.Added:
                        auditEntry.AuditType = AuditType.Create;
                        auditEntry.NewValues[propertyName] = property.CurrentValue;
                        break;

                    case EntityState.Deleted:
                        auditEntry.AuditType = AuditType.Delete;
                        auditEntry.OldValues[propertyName] = property.OriginalValue;
                        break;

                    case EntityState.Modified:
                        if (property.IsModified)
                        {
                            auditEntry.ChangedColumns.Add(propertyName);
                            auditEntry.AuditType = AuditType.Update;
                            auditEntry.OldValues[propertyName] = property.OriginalValue;
                            auditEntry.NewValues[propertyName] = property.CurrentValue;
                        }
                        break;
                    }
                }
            }
            foreach (var auditEntry in auditEntries.Where(_ => !_.HasTemporaryProperties))
            {
                AuditLogs.Add(auditEntry.ToAudit());
            }
            return(auditEntries.Where(_ => _.HasTemporaryProperties).ToList());
        }
예제 #22
0
        /// <summary>
        /// Active Dependent type names of this object
        /// </summary>
        public List <string> DependentObjectNames()
        {
            var dependentObjects = new List <string>();

            if (AuditLogs.Any())
            {
                dependentObjects.Add(typeof(AuditLog).Name);
            }

            if (DelineationsWhereYouAreTheVerifiedByPerson.Any())
            {
                dependentObjects.Add(typeof(Delineation).Name);
            }

            if (DelineationStagingsWhereYouAreTheUploadedByPerson.Any())
            {
                dependentObjects.Add(typeof(DelineationStaging).Name);
            }

            if (FieldVisitsWhereYouAreThePerformedByPerson.Any())
            {
                dependentObjects.Add(typeof(FieldVisit).Name);
            }

            if (FileResourcesWhereYouAreTheCreatePerson.Any())
            {
                dependentObjects.Add(typeof(FileResource).Name);
            }

            if (LandUseBlockStagingsWhereYouAreTheUploadedByPerson.Any())
            {
                dependentObjects.Add(typeof(LandUseBlockStaging).Name);
            }

            if (Notifications.Any())
            {
                dependentObjects.Add(typeof(Notification).Name);
            }

            if (OnlandVisualTrashAssessmentsWhereYouAreTheCreatedByPerson.Any())
            {
                dependentObjects.Add(typeof(OnlandVisualTrashAssessment).Name);
            }

            if (OrganizationsWhereYouAreThePrimaryContactPerson.Any())
            {
                dependentObjects.Add(typeof(Organization).Name);
            }

            if (RegionalSubbasinRevisionRequestsWhereYouAreTheClosedByPerson.Any())
            {
                dependentObjects.Add(typeof(RegionalSubbasinRevisionRequest).Name);
            }

            if (RegionalSubbasinRevisionRequestsWhereYouAreTheRequestPerson.Any())
            {
                dependentObjects.Add(typeof(RegionalSubbasinRevisionRequest).Name);
            }

            if (StormwaterJurisdictionPeople.Any())
            {
                dependentObjects.Add(typeof(StormwaterJurisdictionPerson).Name);
            }

            if (SupportRequestLogsWhereYouAreTheRequestPerson.Any())
            {
                dependentObjects.Add(typeof(SupportRequestLog).Name);
            }

            if (TrashGeneratingUnitAdjustmentsWhereYouAreTheAdjustedByPerson.Any())
            {
                dependentObjects.Add(typeof(TrashGeneratingUnitAdjustment).Name);
            }

            if (TreatmentBMPsWhereYouAreTheInventoryVerifiedByPerson.Any())
            {
                dependentObjects.Add(typeof(TreatmentBMP).Name);
            }

            if (WaterQualityManagementPlanVerifiesWhereYouAreTheLastEditedByPerson.Any())
            {
                dependentObjects.Add(typeof(WaterQualityManagementPlanVerify).Name);
            }
            return(dependentObjects.Distinct().ToList());
        }
예제 #23
0
        public HttpResponseMessage Get(string officeNumber, string report)
        {
            try
            {
                AccessControl.VerifyUserAccessToOffice(officeNumber);
            }
            catch (Exception)
            {
                const string ValidationString = "You do not have security permission to access this area.<br/><br/> " +
                                                "Please contact your Office Manager or Office Administrator if you believe this is an error.";
                return(this.Request.CreateResponse(HttpStatusCode.Forbidden, new { validationmessage = ValidationString }));
            }

            object vm = null;

            try
            {
                ////Report Auditing ALSL-5986
                var auditLog = new AuditLogs();
                auditLog.AddAuditLogEntryForReport($"EPM PatientReportsController API Get {report}");

                var companyId = OfficeHelper.GetCompanyId(officeNumber);
                switch (report)
                {
                case "PatientWorkInProgress":
                    var dictProducts = new Dictionary <string, string> {
                        { string.Empty, "All" }, { "E", "Eyeglass" }, { "S,H", "Contact Lens" }
                    };
                    var productTypes = new List <Lookup>();
                    productTypes.AddRange(dictProducts.Select(entry => new Lookup(entry.Key, entry.Value)));
                    var patientReportsIt2Manager = new PatientReportsIt2Manager();
                    var orderStatus = patientReportsIt2Manager.GetOrderStatusListForWipReport();
                    vm = new PatientWorkInProgressVm
                    {
                        OrderStatusList = orderStatus,
                        ProductTypes    = productTypes
                    };
                    break;

                case "PatientAudit":
                    var dictNoteTypes = new Dictionary <int, string> {
                        { 1, "Profile" }, { 3, "Appointments" }, { 6, "Exams" }, { 8, "Billing" }, { 101, "Audit" }, { 102, "User" }, { 103, "Patient Name Change" }
                    };
                    var oh        = new OfficeHelper();
                    var employees = oh.GetAllActiveEmployees(companyId);
                    var resource  = new List <Lookup>();
                    resource.AddRange(employees.Select(entry => new Lookup(entry.ID, entry.FullName)).OrderBy(e => e.Description));
                    var noteTypes = new List <Lookup>();
                    noteTypes.AddRange(dictNoteTypes.Select(entry => new Lookup(entry.Key, entry.Value)));
                    vm = new PatientAuditVm
                    {
                        Resource  = resource,
                        NoteTypes = noteTypes
                    };
                    break;

                case "MarketingRecall":
                    var recallIt2Manager = new RecallReportsIt2Manager();
                    vm = recallIt2Manager.GetAllRecallsByCompany(companyId);
                    break;

                case "InventoryValuation":
                    ////var dictItems = new Dictionary<string, string> { { "0", "All" }, { "1", "Frames" }, { "2", "Accessories" } };
                    var dictItems = new Dictionary <string, string> {
                        { "0", "All" }, { "1", "Frames" }
                    };
                    var itemTypes = new List <Lookup>();
                    itemTypes.AddRange(dictItems.Select(entry => new Lookup(entry.Key, entry.Value)));
                    vm = new InventoryValuationVm
                    {
                        ItemTypes = itemTypes
                    };
                    break;

                case "PatientRemake":
                    var patientReportsIt2Manager2 = new PatientReportsIt2Manager();
                    vm = new PatientRemakeVm
                    {
                        RemakeReasonList = patientReportsIt2Manager2.GetPatientRemakeReasons(companyId)
                    };
                    break;

                default:
                    Logger.Error("Unknown Patient Report Requested (companyId=" + companyId + ", report=" + report + ")");
                    break;
                }

                return(this.Request.CreateResponse(HttpStatusCode.OK, vm));
            }
            catch (Exception ex)
            {
                var msg = string.Format("Get(officeNumber = {0}, {1}, {2}", officeNumber, "\n", ex);
                return(HandleExceptions.LogExceptions(msg, Logger, ex));
            }
        }
        public ResponseMessage UpdateRequirement(AddSiteRequirement siteRequirement, int id)
        {
            ResponseMessage responseMessage = new ResponseMessage();

            try {
                var siteReq = _context.SiteRequirement.Where(x => x.Id == id && x.IsDelete == false).FirstOrDefault();
                if (siteReq != null)
                {
                    if (_context.SiteRequirement.Where(x => x.Id != id && x.IsDelete == false).Count() > 0)
                    {
                        throw new ValueNotFoundException("Site Requirement Id doesnot exist.");
                    }
                    else
                    {
                        siteReq.FromProjectId  = siteRequirement.ProjectId;
                        siteReq.Remarks        = siteRequirement.Remarks;
                        siteReq.Remarks        = siteRequirement.Remarks;
                        siteReq.Status         = siteRequirement.Status;
                        siteReq.StatusInternal = siteRequirement.StatusInternal;
                        siteReq.RoleId         = 1; //TODO
                        siteReq.UpdatedBy      = 1; //TODO
                        siteReq.UpdatedAt      = DateTime.Now;

                        var siteReqStructures        = _context.SiteReqStructure.Where(x => x.SiteReqId == siteReq.Id).ToList();
                        var addedsiteReqStructures   = siteRequirement.SiteRequirementStructures.Where(x => !siteReqStructures.Any(p => p.Id == x.Id)).ToList();
                        var deletedsiteReqStructures = siteReqStructures.Where(x => !siteRequirement.SiteRequirementStructures.Any(p => p.Id == x.Id)).ToList();
                        var updatedsiteReqStructures = siteRequirement.SiteRequirementStructures.Where(x => siteReqStructures.Any(p => p.Id == x.Id)).ToList();

                        //add Project site req structure
                        if (addedsiteReqStructures.Any())
                        {
                            foreach (var item in addedsiteReqStructures)
                            {
                                SiteReqStructure siteReqStructure = new SiteReqStructure();
                                siteReqStructure.SiteReqId       = siteReq.Id;
                                siteReqStructure.StructId        = item.StructId;
                                siteReqStructure.PlanStartdate   = item.PlanStartdate;
                                siteReqStructure.ActualStartdate = item.RequireByDate;
                                siteReqStructure.PlanReleasedate = item.PlanReleasedate;
                                siteReqStructure.RequireWbsId    = item.RequireWbsId;
                                _context.SiteReqStructure.Add(siteReqStructure);
                            }
                        }

                        //delete Project site req structure
                        if (deletedsiteReqStructures.Any())
                        {
                            foreach (var item in deletedsiteReqStructures)
                            {
                                _context.SiteReqStructure.Remove(item);
                            }
                        }

                        //update Project site req structure
                        if (updatedsiteReqStructures.Any())
                        {
                            foreach (var item in updatedsiteReqStructures)
                            {
                                SiteReqStructure siteReqStructure = _context.SiteReqStructure.Where(x => x.Id == item.Id).FirstOrDefault();
                                siteReqStructure.StructId = item.StructId;
                                siteReqStructure.Quantity = item.Quantity;
                                _context.SaveChanges();
                            }
                        }
                        _context.SaveChanges();
                        SitereqStatusHistory siteStatusHist = new SitereqStatusHistory();
                        siteStatusHist.MrNo           = siteReq.MrNo;
                        siteStatusHist.RoleId         = siteReq.RoleId;
                        siteStatusHist.Status         = siteReq.Status;
                        siteStatusHist.StatusInternal = siteReq.StatusInternal;
                        siteStatusHist.UpdatedAt      = DateTime.Now;
                        siteStatusHist.UpdatedBy      = 1; //TODO
                        _context.SitereqStatusHistory.Add(siteStatusHist);
                        _context.SaveChanges();
                        AuditLogs audit = new AuditLogs()
                        {
                            Action    = "Site Requirement",
                            Message   = string.Format("Site Requirement Updated Successfully {0}", siteReq.Id),
                            CreatedAt = DateTime.Now,
                            CreatedBy = 1 //TODO
                        };
                        _commonRepo.AuditLog(audit);
                        return(responseMessage = new ResponseMessage()
                        {
                            Message = "Site Requirement updated successfully.",
                        });
                    }
                }
                else
                {
                    throw new ValueNotFoundException("Site Requirement not available.");
                }
            } catch (Exception ex) {
                throw ex;
            }
        }
        public ResponseMessage UpdateProject(AddProject project, int id)
        {
            ResponseMessage responseMessage = new ResponseMessage();

            try {
                var projectDB = _context.Project.Where(x => x.Id == id && x.IsDelete == false).FirstOrDefault();
                if (projectDB != null)
                {
                    if (_context.Project.Where(x => x.Name == project.Name && x.Id != id && x.IsDelete == false).Count() > 0)
                    {
                        throw new ValueNotFoundException("Project Name already exist.");
                    }
                    else
                    {
                        projectDB.Name      = project.Name;
                        projectDB.Area      = project.Area;
                        projectDB.IcId      = project.ICId;
                        projectDB.BuId      = project.BUId;
                        projectDB.EdrcCode  = project.EDRCCode;
                        projectDB.JobCode   = project.JobCode;
                        projectDB.CreatedBy = 1; //TODO
                        projectDB.CreatedAt = DateTime.Now;
                        projectDB.UpdatedBy = 1; //TODO
                        projectDB.UpdatedAt = DateTime.Now;
                        projectDB.IsActive  = project.IsActive;


                        var projectLocations     = _context.ProjectSitelocation.Where(x => x.ProjectId == project.Id).ToList();
                        var addedSiteLocations   = project.ProjectSiteLocationDetails.Where(x => !projectLocations.Any(p => p.Id == x.Id)).ToList();
                        var deletedSiteLocations = projectLocations.Where(x => !project.ProjectSiteLocationDetails.Any(p => p.Id == x.Id)).ToList();
                        var updatedSiteLocations = project.ProjectSiteLocationDetails.Where(x => projectLocations.Any(p => p.Id == x.Id)).ToList();

                        //add Project site Location
                        if (addedSiteLocations.Any())
                        {
                            foreach (var item in addedSiteLocations)
                            {
                                ProjectSitelocation projectSitelocation = new ProjectSitelocation();
                                projectSitelocation.Name      = item.Name;
                                projectSitelocation.ProjectId = id;
                                _context.ProjectSitelocation.Add(projectSitelocation);
                            }
                        }

                        //delete Project site Location
                        if (deletedSiteLocations.Any())
                        {
                            foreach (var item in deletedSiteLocations)
                            {
                                _context.ProjectSitelocation.Remove(item);
                            }
                        }

                        //update Project site Location
                        if (updatedSiteLocations.Any())
                        {
                            foreach (var item in updatedSiteLocations)
                            {
                                ProjectSitelocation projectSitelocation = _context.ProjectSitelocation.Where(x => x.Id == item.Id).FirstOrDefault();
                                projectSitelocation.Name = item.Name;
                            }
                        }
                        _context.SaveChanges();
                        AuditLogs audit = new AuditLogs()
                        {
                            Action    = "Project",
                            Message   = string.Format("Project Updated Successfully {0}", project.Name),
                            CreatedAt = DateTime.Now,
                            CreatedBy = 1 //TODO
                        };
                        _commonRepo.AuditLog(audit);
                        return(responseMessage = new ResponseMessage()
                        {
                            Message = "Project updated successfully.",
                        });
                    }
                }
                else
                {
                    throw new ValueNotFoundException("Project not available.");
                }
            } catch (Exception ex) {
                throw ex;
            }
        }
예제 #26
0
        /// <summary>
        /// Dependent type names of this entity
        /// </summary>
        public void DeleteChildren(DatabaseEntities dbContext)
        {
            foreach (var x in AuditLogs.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in DelineationsWhereYouAreTheVerifiedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in DelineationStagingsWhereYouAreTheUploadedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in FieldVisitsWhereYouAreThePerformedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in FileResourcesWhereYouAreTheCreatePerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in LandUseBlockStagingsWhereYouAreTheUploadedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in Notifications.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in OnlandVisualTrashAssessmentsWhereYouAreTheCreatedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in OrganizationsWhereYouAreThePrimaryContactPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in RegionalSubbasinRevisionRequestsWhereYouAreTheClosedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in RegionalSubbasinRevisionRequestsWhereYouAreTheRequestPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in StormwaterJurisdictionPeople.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in SupportRequestLogsWhereYouAreTheRequestPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in TrashGeneratingUnitAdjustmentsWhereYouAreTheAdjustedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in TreatmentBMPsWhereYouAreTheInventoryVerifiedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }

            foreach (var x in WaterQualityManagementPlanVerifiesWhereYouAreTheLastEditedByPerson.ToList())
            {
                x.DeleteFull(dbContext);
            }
        }
예제 #27
0
 public void AddAuditLog(AuditLogs log)
 {
     db.AuditLogs.Add(log);
     db.SaveChanges();
 }
예제 #28
0
 public void AddAuditLog_ToHistory(AuditLogs log)
 {
     db.Database.CommandTimeout = 300;
     db.InsertAuditLogToHistory(log.LogDate, log.AuditLogShortDesc, log.AuditLogLongDesc);
 }
        public ResponseMessage UpdateVendor(AddVendor vendor, int id)
        {
            ResponseMessage responseMessage = new ResponseMessage();

            try {
                var sc = _context.SubContractor.Where(x => x.Id == id && x.IsDelete == false)
                         .Include(s => s.SubContractorServiceType).FirstOrDefault();
                if (sc != null)
                {
                    if (_context.SubContractor.Where(x => x.Name == vendor.Name && x.Id != id && x.IsDelete == false).Count() > 0)
                    {
                        throw new ValueNotFoundException("Vendor Name already exist.");
                    }
                    else
                    {
                        sc.Name       = vendor.Name;
                        sc.VendorCode = vendor.VendorCode;
                        sc.IsStatus   = vendor.IsStatus;
                        sc.UpdatedBy  = 1; //TODO
                        sc.UpdatedAt  = DateTime.Now;
                        _context.SaveChanges();

                        var subcontractorServiceType = sc.SubContractorServiceType;
                        var addedSubConService       = vendor.VendorServiceTypeDetails.Where(x => !subcontractorServiceType.Any(s => s.Id == x.Id)).ToList();
                        var deletedSubConService     = subcontractorServiceType.Where(x => !vendor.VendorServiceTypeDetails.Any(s => s.Id == x.Id)).ToList();
                        var updatedSubConService     = vendor.VendorServiceTypeDetails.Where(x => subcontractorServiceType.Any(p => p.Id == x.Id)).ToList();

                        //add Project site Location
                        if (addedSubConService.Any())
                        {
                            foreach (var item in addedSubConService)
                            {
                                SubContractorServiceType subConServiceType = new SubContractorServiceType();
                                subConServiceType.Id            = item.Id;
                                subConServiceType.SubcontId     = vendor.Id;
                                subConServiceType.ServicetypeId = item.ServiceTypeId;
                                _context.SubContractorServiceType.Add(subConServiceType);
                            }
                        }

                        //delete Project site Location
                        if (deletedSubConService.Any())
                        {
                            foreach (var item in deletedSubConService)
                            {
                                _context.SubContractorServiceType.Remove(item);
                            }
                        }

                        //update Project site Location
                        if (updatedSubConService.Any())
                        {
                            foreach (var item in updatedSubConService)
                            {
                                SubContractorServiceType subConServiceType = new SubContractorServiceType();
                                subConServiceType.SubcontId     = id;
                                subConServiceType.ServicetypeId = item.ServiceTypeId;
                            }
                        }

                        _context.SaveChanges();

                        AuditLogs audit = new AuditLogs()
                        {
                            Action    = "Vendor",
                            Message   = string.Format("Vendor Updated  Succussfully {0}", vendor.Name),
                            CreatedAt = DateTime.Now,
                            CreatedBy = 1 //TODO
                        };
                        _commonRepo.AuditLog(audit);
                        return(responseMessage = new ResponseMessage()
                        {
                            Message = "Vendor updated successfully.",
                        });
                    }
                }
                else
                {
                    throw new ValueNotFoundException("Vendor not available.");
                }
            } catch (Exception ex) {
                throw ex;
            }
        }