Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #6
0
        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());
            }
        }
Beispiel #7
0
        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());
            }
        }