Ejemplo n.º 1
0
        public async Task <IEnumerable <OrphanageDataModel.Persons.Father> > GetFathers(int Uid, int pageSize, int pageNum)
        {
            IList <OrphanageDataModel.Persons.Father> fathersList = new List <OrphanageDataModel.Persons.Father>();

            using (var _orphanageDBC = new OrphanageDbCNoBinary())
            {
                int totalSkiped  = pageSize * pageNum;
                int FathersCount = await _orphanageDBC.Fathers.AsNoTracking().CountAsync();

                if (FathersCount < totalSkiped)
                {
                    totalSkiped = FathersCount - pageSize;
                }
                if (totalSkiped < 0)
                {
                    totalSkiped = 0;
                }
                var fathers = await _orphanageDBC.Fathers.AsNoTracking()
                              .OrderBy(o => o.Id).Skip(() => totalSkiped).Take(() => pageSize)
                              .Include(f => f.Families)
                              .Include(f => f.Name)
                              .Where(f => f.UserId == Uid)
                              .ToListAsync();

                foreach (var father in fathers)
                {
                    OrphanageDataModel.Persons.Father fatherToFill = father;
                    FatherDbService.setFatherEntities(ref fatherToFill, _orphanageDBC);
                    _selfLoopBlocking.BlockFatherSelfLoop(ref fatherToFill);
                    _uriGenerator.SetFatherUris(ref fatherToFill);
                    fathersList.Add(fatherToFill);
                }
            }
            return(fathersList);
        }
Ejemplo n.º 2
0
        public async Task <string> GetWifeName(OrphanageDataModel.Persons.Father father)
        {
            _logger.Information($"Trying to get wife name for the father {father.Name.FullName()}");
            string WifeName = "";

            foreach (var fam in father.Families)
            {
                if (fam.Mother == null || fam.Mother.Name == null)
                {
                    _logger.Information($"Trying to get mother object for the father {father.Name.FullName()}");
                    fam.Mother = await _motherDbService.GetMother(fam.MotherId);
                }
                if (father.Families.Count > 1)
                {
                    WifeName += fam.Mother.Name.FullName() + ", ";
                }
                else
                {
                    WifeName += fam.Mother.Name.FullName() + ", ";
                }
            }
            if (WifeName.EndsWith(", "))
            {
                WifeName = WifeName.Substring(0, WifeName.Length - 2);
            }
            _logger.Information($"wife name for the father {father.Name.FullName()}, is {WifeName}");
            return(WifeName);
        }
Ejemplo n.º 3
0
        public async Task <IEnumerable <OrphanageDataModel.Persons.Father> > GetFathers(IList <int> fathersIds)
        {
            _logger.Information($"trying to get fathers with the given Id list");
            if (fathersIds == null || fathersIds.Count() == 0)
            {
                _logger.Information($"the given Id list is null or empty, null will be returned");
                return(null);
            }
            IList <OrphanageDataModel.Persons.Father> fathersList = new List <OrphanageDataModel.Persons.Father>();

            using (var _orphanageDBC = new OrphanageDbCNoBinary())
            {
                var fathers = await _orphanageDBC.Fathers.AsNoTracking()
                              .Where(m => fathersIds.Contains(m.Id))
                              .Include(f => f.Families)
                              .Include(f => f.Name)
                              .ToListAsync();

                foreach (var father in fathers)
                {
                    OrphanageDataModel.Persons.Father fatherToFill = father;
                    setFatherEntities(ref fatherToFill, _orphanageDBC);
                    _selfLoopBlocking.BlockFatherSelfLoop(ref fatherToFill);
                    _uriGenerator.SetFatherUris(ref fatherToFill);
                    father.OrphansCount = await GetOrphansCount(father.Id, _orphanageDBC);

                    father.WifeName = await(GetWifeName(father));
                    fathersList.Add(fatherToFill);
                }
            }
            _logger.Information($"{fathersList.Count} records of fathers will be returned");
            return(fathersList);
        }
Ejemplo n.º 4
0
        public async Task <OrphanageDataModel.Persons.Father> getFather(int Cid)
        {
            var returnedFather = await _apiClient.Fathers_GetAsync(Cid);

            var deathCertificatePhotoTask = _apiClient.GetImageData(returnedFather.DeathCertificateImageURI);
            var personalPhotoTask         = _apiClient.GetImageData(returnedFather.PersonalPhotoURI);

            returnedFather.DeathCertificatePhotoData = await deathCertificatePhotoTask;
            returnedFather.PhotoData = await personalPhotoTask;
            _CurrentFather           = returnedFather;
            return(returnedFather);
        }
Ejemplo n.º 5
0
        public async Task <int> SaveFather(OrphanageDataModel.Persons.Father father)
        {
            _logger.Information($"Trying to save father");
            if (father == null)
            {
                _logger.Error($"the parameter object guarantor is null, NullReferenceException will be thrown");
                throw new NullReferenceException();
            }
            if (father.NameId <= 0)
            {
                _logger.Error($"the NameID of the parameter object father equals {father.NameId}, NullReferenceException will be thrown");
                throw new NullReferenceException();
            }
            using (OrphanageDbCNoBinary orphanageDc = new OrphanageDbCNoBinary())
            {
                int ret = 0;
                orphanageDc.Configuration.AutoDetectChangesEnabled = true;
                orphanageDc.Configuration.LazyLoadingEnabled       = true;
                orphanageDc.Configuration.ProxyCreationEnabled     = true;

                var fatherToReplace = await orphanageDc.Fathers.Where(f => f.Id == father.Id).FirstAsync();

                if (fatherToReplace == null)
                {
                    _logger.Error($"the original father object with id {father.Id} object is not founded, ObjectNotFoundException will be thrown");
                    throw new Exceptions.ObjectNotFoundException();
                }
                _logger.Information($"processing the name object of the father with id({father.Id})");
                ret += await _regularDataService.SaveName(father.Name, orphanageDc);

                fatherToReplace.Birthday           = father.Birthday;
                fatherToReplace.ColorMark          = father.ColorMark;
                fatherToReplace.DateOfDeath        = father.DateOfDeath;
                fatherToReplace.DeathReason        = father.DeathReason;
                fatherToReplace.IdentityCardNumber = father.IdentityCardNumber;
                fatherToReplace.Jop    = father.Jop;
                fatherToReplace.NameId = father.NameId;
                fatherToReplace.Note   = father.Note;
                fatherToReplace.Story  = father.Story;
                ret += await orphanageDc.SaveChangesAsync();

                if (ret > 0)
                {
                    _logger.Information($"father with id({father.Id}) has been successfully saved to the database, {ret} changes have been made");
                    return(ret);
                }
                else
                {
                    _logger.Information($"nothing has changed, 0 will be returned");
                    return(0);
                }
            }
        }
Ejemplo n.º 6
0
        public static void setFatherEntities(ref OrphanageDataModel.Persons.Father father, DbContext dbContext)
        {
            OrphanageDbCNoBinary dbCNoBinary = (OrphanageDbCNoBinary)dbContext;

            foreach (var fam in father.Families)
            {
                var moth = dbCNoBinary.Mothers.
                           Include(m => m.Name).
                           Include(m => m.Address).
                           FirstOrDefault(m => m.Id == fam.MotherId);
                fam.Mother = moth;
            }
        }
Ejemplo n.º 7
0
        private async void LoadFather(int fatherId)
        {
            _Father = await _fatherEditViewModel.getFather(fatherId);

            if (_Father != null)
            {
                fatherBindingSource.DataSource           = _Father;
                _fatherEntityValidator.controlCollection = Controls;
                _fatherEntityValidator.DataEntity        = _Father;
                nameForm1.NameDataSource = _Father.Name;
                SetData();
                txtName.Text = nameForm1.FullName;
            }
            TranslateControls();
        }
Ejemplo n.º 8
0
        public async Task <bool> Save(OrphanageDataModel.Persons.Father father)
        {
            try
            {
                father.DeathCertificatePhotoData = null;
                father.PhotoData = null;
                await _apiClient.Fathers_PutAsync(father);

                return(true);
            }
            catch (ApiClientException apiEx)
            {
                return(_exceptionHandler.HandleApiSaveException(apiEx));
            }
        }
Ejemplo n.º 9
0
        public async Task <HttpResponseMessage> Put(OrphanageDataModel.Persons.Father father)
        {
            var ret = 0;

            ret = await _FatherDBService.SaveFather(father);

            if (ret > 0)
            {
                return(_httpMessageConfiguerer.OK());
            }
            else
            {
                return(_httpMessageConfiguerer.NothingChanged());
            }
        }
Ejemplo n.º 10
0
        public async Task <IEnumerable <OrphanageDataModel.Persons.Father> > GetFathers(int pageSize, int pageNum)
        {
            _logger.Information($"Trying to get Fathers with pageSize {pageSize} and pageNumber {pageNum}");
            IList <OrphanageDataModel.Persons.Father> fathersList = new List <OrphanageDataModel.Persons.Father>();

            using (var _orphanageDBC = new OrphanageDbCNoBinary())
            {
                int totalSkiped  = pageSize * pageNum;
                int FathersCount = await _orphanageDBC.Fathers.AsNoTracking().CountAsync();

                if (FathersCount < totalSkiped)
                {
                    _logger.Warning($"Total skipped Fathers({totalSkiped}) are more than the count of all Fathers ({FathersCount})");
                    totalSkiped = FathersCount - pageSize;
                }
                if (totalSkiped < 0)
                {
                    _logger.Warning($"Total skipped Fathers({totalSkiped}) are less than zero");
                    totalSkiped = 0;
                }
                var fathers = await _orphanageDBC.Fathers.AsNoTracking()
                              .OrderBy(o => o.Id).Skip(() => totalSkiped).Take(() => pageSize)
                              .Include(f => f.Families)
                              .Include(f => f.Name)
                              .ToListAsync();

                foreach (var father in fathers)
                {
                    OrphanageDataModel.Persons.Father fatherToFill = father;
                    setFatherEntities(ref fatherToFill, _orphanageDBC);
                    _selfLoopBlocking.BlockFatherSelfLoop(ref fatherToFill);
                    _uriGenerator.SetFatherUris(ref fatherToFill);
                    father.OrphansCount = await GetOrphansCount(father.Id, _orphanageDBC);

                    father.WifeName = await(GetWifeName(father));
                    fathersList.Add(fatherToFill);
                }
            }
            _logger.Information($"{fathersList.Count} records of fathers will be returned");
            return(fathersList);
        }
Ejemplo n.º 11
0
        public async Task <IEnumerable <OrphanageDataModel.Persons.Father> > GetFathers(int Uid)
        {
            IList <OrphanageDataModel.Persons.Father> fathersList = new List <OrphanageDataModel.Persons.Father>();

            using (var _orphanageDBC = new OrphanageDbCNoBinary())
            {
                var fathers = await _orphanageDBC.Fathers.AsNoTracking()
                              .Include(f => f.Families)
                              .Include(f => f.Name)
                              .Where(f => f.UserId == Uid)
                              .ToListAsync();

                foreach (var father in fathers)
                {
                    OrphanageDataModel.Persons.Father fatherToFill = father;
                    FatherDbService.setFatherEntities(ref fatherToFill, _orphanageDBC);
                    _selfLoopBlocking.BlockFatherSelfLoop(ref fatherToFill);
                    _uriGenerator.SetFatherUris(ref fatherToFill);
                    fathersList.Add(fatherToFill);
                }
            }
            return(fathersList);
        }
Ejemplo n.º 12
0
        public void BlockFatherSelfLoop(ref OrphanageDataModel.Persons.Father father)
        {
            if (father == null)
            {
                return;
            }

            dynamic fathN = father.Name;

            BlockForignKeys(ref fathN);
            father.Name = fathN;
            if (father.Families != null)
            {
                var familesList = new List <OrphanageDataModel.RegularData.Family>();
                foreach (var fam in father.Families)
                {
                    fam.Father = null;
                    var famToblock = fam;
                    BlockFamilySelfLoop(ref famToblock);
                    familesList.Add(famToblock);
                }
                father.Families = familesList;
            }
        }
Ejemplo n.º 13
0
 public void SetFatherUris(ref OrphanageDataModel.Persons.Father fatherDto)
 {
     if (fatherDto == null)
     {
         return;
     }
     fatherDto.PersonalPhotoURI         = "api/father/media/photo/" + fatherDto.Id;
     fatherDto.DeathCertificateImageURI = "api/father/media/death/" + fatherDto.Id;
     if (fatherDto.Families != null)
     {
         var tempList = new List <OrphanageDataModel.RegularData.Family>();
         foreach (var fam in fatherDto.Families)
         {
             var familyDC = fam;
             if (familyDC.FamilyCardImagePage1URI == null || familyDC.FamilyCardImagePage1URI.Length == 0 ||
                 familyDC.FamilyCardImagePage2URI == null || familyDC.FamilyCardImagePage2URI.Length == 0)
             {
                 SetFamilyUris(ref familyDC);
             }
             tempList.Add(familyDC);
         }
         fatherDto.Families = tempList;
     }
 }
Ejemplo n.º 14
0
        ///<inheritdoc/>
        public async Task <int> AddFather(OrphanageDataModel.Persons.Father father, OrphanageDbCNoBinary orphanageDBC)
        {
            _logger.Information($"Trying to add new father");
            if (father == null)
            {
                _logger.Error($"the parameter object father is null, NullReferenceException will be thrown");
                throw new NullReferenceException();
            }
            if (father.Name == null)
            {
                _logger.Error($"the Name object of the parameter object father is null, NullReferenceException will be thrown");
                throw new NullReferenceException();
            }

            if (!Properties.Settings.Default.ForceAdd)
            {
                _logger.Information($"ForceAdd option is not activated");
                if (Properties.Settings.Default.CheckName)
                {
                    _logger.Information($"CheckName option is activated, trying to get the equal names from database");
                    var ret = GetFathersByName(father.Name, orphanageDBC).FirstOrDefault();
                    if (ret != null)
                    {
                        _logger.Error($"father with id({father.Id}) has the same name, DuplicatedObjectException will be thrown");
                        throw new DuplicatedObjectException(father.GetType(), ret.GetType(), ret.Id);
                    }
                    else
                    {
                        _logger.Information($"didn't found any similar names to ({father.Name.FullName()}) in the database");
                    }
                }
            }
            var fatherName     = father.Name;
            var taskFatherName = _regularDataService.AddName(fatherName, orphanageDBC);

            father.NameId = await taskFatherName;
            if (father.NameId == -1)
            {
                _logger.Warning($"Name object has not been added, nothing will be added, -1 will be returned");
                return(-1);
            }
            father.Name = null;

            if (father.ActingUser != null)
            {
                father.ActingUser = null;
            }
            if (father.Families != null)
            {
                father.Families = null;
            }

            orphanageDBC.Fathers.Add(father);

            if (await orphanageDBC.SaveChangesAsync() == 1)
            {
                _logger.Information($"new father object with id {father.Id} has been added");
                return(father.Id);
            }
            else
            {
                _logger.Warning($"something went wrong, nothing was added, -1 will be returned");
                return(-1);
            }
        }