public IHttpActionResult GetNextUnassignedGln() { GlnDto nextUnassignedGln = _unitOfWork.Glns.Find(bc => !bc.Assigned && !bc.AlternativeSystemIsTruth).Select(DtoHelper.CreateGlnIncludeChildrenDto).FirstOrDefault(); if (nextUnassignedGln.Id <= 0) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No unassigned GLN can be located."))); } return(Ok(nextUnassignedGln)); }
public IHttpActionResult GetGlnByGln(string gln) { var foundGln = _unitOfWork.Glns.GetGlnsByGln(gln); if (Equals(foundGln, null)) { return(NotFound()); } else { GlnDto mappedGln = DtoHelper.CreateGlnIncludeChildrenDto(foundGln); return(Ok(mappedGln)); } }
public IHttpActionResult GetGlnById(int id) { var gln = _unitOfWork.Glns.Get(id); if (Equals(gln, null)) { return(BadRequest()); } else { GlnDto mappedGln = DtoHelper.CreateGlnIncludeChildrenDto(gln); return(Ok(mappedGln)); } }
public IHttpActionResult NewAssignedGln([FromBody] Gln assignedGln) { if (Equals(assignedGln, null) || Equals(assignedGln.Address, null)) { return(BadRequest()); } GlnDto updateGln = DtoHelper.CreateGlnIncludeChildrenDto(_unitOfWork.Glns.FindSingle(gln => gln.Id == assignedGln.Id)); if (Equals(updateGln, null)) { return(BadRequest()); } _unitOfWork.Glns.UpdateGln(assignedGln); return(Ok(DtoHelper.CreateGlnIncludeChildrenDto(assignedGln))); }
private static GlnDto CreateBasicGlnDto(Gln gln) { var glnDto = new GlnDto() { Id = gln.Id, FriendlyDescriptionPurpose = gln.FriendlyDescriptionPurpose, Active = gln.Active, OwnGln = gln.OwnGln, ParentGln = gln.ParentGln, CreationDate = gln.CreationDate, UseParentAddress = gln.UseParentAddress, Verified = gln.Verified.Value, FunctionalType = gln.FunctionalType, LegalType = gln.LegalType, DigitalType = gln.DigitalType, PhysicalType = gln.PhysicalType, Public = gln.Public, Assigned = gln.Assigned, AddressId = gln.AddressId, ContactId = gln.ContactId, SuspensionReason = gln.SuspensionReason, Version = gln.Version, NumberOfChildren = gln.Children.Count, TrustActive = gln.TrustActive, SuspendedBy = gln.SuspendedBy, Primary = gln.Primary, ParentDescriptionPurpose = gln.ParentDescriptionPurpose, SuspensionDate = gln.SuspensionDate, TruthDescriptionPurpose = gln.TruthDescriptionPurpose, AlternativeSystemIsTruth = gln.AlternativeSystemIsTruth, Department = gln.Department, Function = gln.Function, DeliveryNote = gln.DeliveryNote }; return(glnDto); }
public IHttpActionResult ChangeParent(int glnId, string originalParentGln, string newParentGln) { if (glnId <= 0 || string.IsNullOrWhiteSpace(originalParentGln) || string.IsNullOrWhiteSpace(newParentGln)) { return(BadRequest()); } var updateParentGln = _unitOfWork.Glns.FindSingle(gln => gln.Id == glnId); var newParent = _unitOfWork.Glns.FindSingle(gln => gln.OwnGln == newParentGln); var oldParent = _unitOfWork.Glns.FindSingle(gln => gln.OwnGln == originalParentGln); if (Equals(updateParentGln, null) || Equals(newParent, null) || Equals(oldParent, null)) { return(BadRequest()); } // Don't update if alternative system is responsible for holding truth state if (updateParentGln.AlternativeSystemIsTruth) { return(BadRequest()); } try { //Check to ensure not assigning itself as its own parent and //Check that new parents parent is not the same as childs own number to avoid creating a loop if (updateParentGln.OwnGln != newParent.OwnGln && newParent.ParentGln != updateParentGln.OwnGln) { var updateGln = _unitOfWork.Glns.FindSingle(gln => gln.Id == glnId); updateGln.ParentDescriptionPurpose = newParent.FriendlyDescriptionPurpose; updateGln.ParentGln = newParent.OwnGln; updateGln.ParentId = newParent.Id; if (newParent.TierLevel >= 5) { updateGln.TierLevel = newParent.TierLevel; } else { updateGln.TierLevel = newParent.TierLevel + 1; } updateGln.Version = updateGln.Version + 1; if (updateGln.PhysicalType) { var primaryContact = _unitOfWork.PrimaryContacts .FindSingle(pc => pc.ForPhysicals == true); if (primaryContact != null) { updateGln.ContactId = primaryContact.Id; } } else { var primaryContact = _unitOfWork.PrimaryContacts .FindSingle(pc => pc.ForFunctionals == true); if (primaryContact != null) { updateGln.ContactId = primaryContact.Id; } } _unitOfWork.Complete(); UpdateTierLevel(updateGln); var successMsg = $"The parent of GLN: {updateGln.OwnGln} was updated from {originalParentGln} to new parent GLN: {newParentGln}"; _logger.SuccessfulUpdateServerLog <string, object>(HttpContext.Current.User, successMsg); GlnDto returnUpdatedGln = DtoHelper.CreateGlnIncludeChildrenDto(_unitOfWork.Glns.FindSingle(gln => gln.Id == glnId)); return(Ok(returnUpdatedGln)); } return(Ok(updateParentGln)); } catch (Exception ex) { var failedMsg = $"Failed to update parent on {updateParentGln.OwnGln} " + $"from to old parent {originalParentGln} to new parent {newParentGln}. Exception generated: {ex}"; _logger.FailedUpdateServerLog <Exception, string, object>(HttpContext.Current.User, ex.Message, ex.InnerException, failedMsg); return(InternalServerError()); } }
public IHttpActionResult ChangeParentOnChildren(string origninalParentGln, string newParentGln) { if (string.IsNullOrWhiteSpace(origninalParentGln) || string.IsNullOrWhiteSpace(newParentGln)) { return(BadRequest()); } var childrenToUpdateParent = _unitOfWork.Glns.Find(gln => gln.ParentGln == origninalParentGln).ToList(); var originalParent = _unitOfWork.Glns.FindSingle(gln => gln.OwnGln == origninalParentGln); var newParent = _unitOfWork.Glns.FindSingle(gln => gln.OwnGln == newParentGln); if (Equals(childrenToUpdateParent, null) || Equals(originalParent, null) || Equals(newParent, null)) { return(BadRequest()); } try { foreach (var child in childrenToUpdateParent) { //Check to ensure not assigning itself as its own parent and //Check that new parents parent is not the same as childs own number to avoid creating a loop if (child.OwnGln != newParentGln && newParent.ParentGln != child.OwnGln) { // Don't update if alternative system is responsible for holding truth state if (!child.AlternativeSystemIsTruth) { child.ParentGln = newParentGln; child.Version = child.Version + 1; } } } //Required so that the calculations for children below will be correct _unitOfWork.Complete(); originalParent.NumberOfChildren = _unitOfWork.Glns.Find(gln => gln.ParentGln == origninalParentGln).Count(); originalParent.Version = originalParent.Version + 1; newParent.NumberOfChildren = _unitOfWork.Glns.Find(gln => gln.ParentGln == newParentGln).Count(); newParent.Version = newParent.Version + 1; _unitOfWork.Complete(); var successMsg = $"The children of parent GLN: {origninalParentGln} were all assigned to new parent GLN: {newParentGln}"; foreach (var child in childrenToUpdateParent) { var i = 1; successMsg = successMsg + $" Child No. {i} {child.OwnGln}, "; i = i + 1; } _logger.SuccessfulUpdateServerLog(HttpContext.Current.User, DtoHelper.CreateGlnDto(originalParent), successMsg); GlnDto returnParentGln = DtoHelper.CreateGlnIncludeChildrenDto(_unitOfWork.Glns.FindSingle(gln => gln.OwnGln == origninalParentGln)); return(Ok(returnParentGln)); } catch (Exception ex) { var failedMsg = $"Failed to update children of parent {origninalParentGln} to new parent {newParentGln}. Exception generated: {ex}"; _logger.FailedUpdateServerLog <Exception, string, object>(HttpContext.Current.User, ex.Message, ex.InnerException, failedMsg); return(InternalServerError()); } }