public DF_Status CreateStatus(DF_Status status, bool isActiveAiringStatus) { try { ODTDatastore _dbODT = new ODTDatastore(_configuration); int highOrder = _dbODT.GetDatabase().GetCollection <DF_Status>(isActiveAiringStatus ? "DFStatus" : "DFExpiredStatus").FindAll() .SetSortOrder(SortBy.Descending(new[] { "StatusID" })) .SetFields(new[] { "StatusID" }) .SetLimit(1) .FirstOrDefault().StatusID; status.StatusID = ++highOrder; status.CreatedDate = DateTime.Now; status.ModifiedDate = status.CreatedDate; status.ModifiedBy = status.CreatedBy; MongoCollection <DF_Status> statusCollection = _dbODT.GetDatabase().GetCollection <DF_Status>(isActiveAiringStatus ? "DFStatus" : "DFExpiredStatus"); statusCollection.Save(status); } catch (Exception) { throw; } return(status); }
private IEnumerable <DF_Status> CreateInvalidDestinationStatuses(DF_Status status, IEnumerable <int> invalidDestinations) { var invalidDestinationStatuses = new List <DF_Status>(); foreach (var invalidReleasedDestinationId in invalidDestinations) { var invalidDestinationStatus = new DF_Status { AssetID = status.AssetID, DestinationID = invalidReleasedDestinationId, CreatedBy = status.CreatedBy, ModifiedBy = status.ModifiedBy, CreatedDate = status.CreatedDate, ModifiedDate = status.ModifiedDate, Message = string.Concat("This destination might have been mapped to this asset's feeds in the past; ", "however, it is no longer map. Until it is re-mapped or new destination statuses are added, it will be ignored."), ReporterEnum = status.ReporterEnum, StatusEnum = StatusLibrary.GetStatusEnumByValue("IgnoreDestination").Enum, UniqueId = status.UniqueId }; invalidDestinationStatuses.Add(invalidDestinationStatus); } return(invalidDestinationStatuses); }
private IEnumerable <DF_Status> CreateAssetStatusesForNewDestinations(DF_Status status, IEnumerable <int> newDestinations) { var destinationStatuses = new List <DF_Status>(); foreach (var destinationEnum in newDestinations) { var destinationStatus = new DF_Status { AssetID = status.AssetID, DestinationID = destinationEnum, CreatedBy = status.CreatedBy, ModifiedBy = status.ModifiedBy, CreatedDate = status.CreatedDate, ModifiedDate = status.ModifiedDate, Message = status.Message, ReporterEnum = status.ReporterEnum, StatusEnum = status.StatusEnum, UniqueId = status.UniqueId }; destinationStatuses.Add(destinationStatus); } return(destinationStatuses); }
/// <summary> /// Clones the status /// </summary> /// <param name="status">the DF status to clone</param> /// <returns></returns> private DF_Status CloneStatus(DF_Status status) { var clonedStatusString = JsonConvert.SerializeObject(status); var clonedStatus = JsonConvert.DeserializeObject <DF_Status>(clonedStatusString); clonedStatus.Id = string.Empty; return(clonedStatus); }
/// <summary> /// Deports the Status to Expired Collection /// </summary> /// <param name="status"></param> public void MoveToCurrentCollection(DF_Status status) { var expiredStatus = CloneStatus(status); _currentCollection.Save(expiredStatus); var query = Query <DF_Status> .EQ(e => e.Id, status.Id); _expiredCollection.Remove(query); }
/// <summary> /// Deports the Status to Expired Collection /// </summary> /// <param name="status"></param> public void MoveToExpireCollection(DF_Status status) { if (_expiredCollection.FindOne(Query <DF_Status> .EQ(e => e.Id, status.Id)) == null) { _expiredCollection.Save(status); } var query = Query <DF_Status> .EQ(e => e.Id, status.Id); _currentCollection.Remove(query); }
private bool DoesStatusExistForAssetReporterAndDestination(DF_Status status, bool isActiveAiringStatus) { ODTDatastore _dbODT = new ODTDatastore(_configuration); var statusCollection = _dbODT.GetDatabase().GetCollection <DF_Status>(isActiveAiringStatus ? "DFStatus" : "DFExpiredStatus"); var query = Query.And(Query.EQ("AssetID", status.AssetID), Query.EQ("StatusEnum", status.StatusEnum), Query.EQ("ReporterEnum", status.ReporterEnum), Query.EQ("DestinationID", status.DestinationID)); return(statusCollection.Find(query).Any()); }
private void SaveBIMStatus(string airingId, bool isActiveAiringStatus, int statusEnum, int destinationEnum, string message) { var status = new DF_Status { AssetID = airingId, StatusEnum = statusEnum, Message = message, CreatedBy = "OnDemandTools", ReporterEnum = 9, //OnDemandTools DestinationID = destinationEnum }; UpdateStatus(status, isActiveAiringStatus); }
public DF_Status CreateUniqueStatus(DF_Status status, bool isActiveAiringStatus) { return(!DoesStatusExistForAssetReporterAndDestination(status, isActiveAiringStatus) ? CreateStatus(status, isActiveAiringStatus) : new DF_Status { AssetID = status.AssetID, StatusEnum = status.StatusEnum, CreatedBy = status.CreatedBy, CreatedDate = DateTime.Now, DestinationID = q.GetByName("None").DestinationID, ModifiedBy = status.ModifiedBy, ModifiedDate = DateTime.Now, ReporterEnum = status.ReporterEnum, Message = "Status for specfied asset and destination aready exists and will not be created to avoid duplicates." }); }
public List <DF_Status> CreateDestinationStatuses(DF_Status status, IList <DF_Destination> destinations, bool isActiveAiringStatus) { var releasedDestinationStatuses = new List <DF_Status>(); var currentFeedDestinations = GetDestinations(status.AssetID, destinations).ToList(); List <DF_Status> dd = GetStatusesByAssetId(status.AssetID, isActiveAiringStatus); var releasedStatuses = dd.Where(s => s.StatusEnum == StatusLibrary.GetStatusEnumByValue("Released").Enum).ToList(); var existingReportedDestinations = GetReportedDestinations(releasedStatuses); var existingInvalidDestinations = GetExistingInvalidDestinations(dd); var newInvalidDestinations = GetNewInvalidDestinations(existingReportedDestinations, currentFeedDestinations, existingInvalidDestinations); releasedDestinationStatuses.AddRange(CreateAssetStatusesForNewDestinations(status, currentFeedDestinations)); releasedDestinationStatuses.AddRange(CreateInvalidDestinationStatuses(status, newInvalidDestinations)); return(releasedDestinationStatuses); }
private void SaveStatus(string airingId, bool isActiveAiringStatus, int statusEnum, int destinationEnum, bool unique, string message) { var status = new DF_Status { AssetID = airingId, StatusEnum = statusEnum, Message = message, CreatedBy = "OnDemandTools", ReporterEnum = 9, //OnDemandTools DestinationID = destinationEnum }; var dataModel = CreateStatuses(new List <DF_Status> { status }, isActiveAiringStatus, unique); }
private void UpdateStatus(DF_Status status, bool isActiveAiringStatus) { var bimStatus = new BsonValue[] { BIMFOUND, BIMMISMATCH, BIMNOTFOUND }; var dfStatusCollection = _database.GetCollection <DF_Status>(isActiveAiringStatus ? "DFStatus" : "DFExpiredStatus"); var query = Query.And(Query.EQ("AssetID", status.AssetID), Query.In("StatusEnum", bimStatus), Query.EQ("ReporterEnum", status.ReporterEnum), Query.EQ("DestinationID", status.DestinationID)); bool isStatusExistsinDFStatus = dfStatusCollection.Find(query).Any(); int highOrder = dfStatusCollection.FindAll() .SetSortOrder(SortBy.Descending(new[] { "StatusID" })) .SetFields(new[] { "StatusID" }) .SetLimit(1) .FirstOrDefault().StatusID; status.StatusID = ++highOrder; status.CreatedDate = DateTime.Now; status.ModifiedDate = status.CreatedDate; status.ModifiedBy = status.CreatedBy; if (!isStatusExistsinDFStatus) { dfStatusCollection.Save(status); } else { dfStatusCollection.Update(query, Update <DF_Status> .Set(c => c.StatusID, status.StatusID) .Set(c => c.StatusEnum, status.StatusEnum) .Set(c => c.Message, status.Message) .Set(c => c.CreatedDate, status.CreatedDate) .Set(c => c.ModifiedDate, status.ModifiedDate) .Set(c => c.ModifiedBy, status.ModifiedBy) ); } }