Ejemplo n.º 1
0
        private async Task <List <ExperienceDescription> > CreateOrUpdateExpDescAsync
            (IList <ExperienceDescriptionModel> experienceDescriptionModels)
        {
            if (experienceDescriptionModels == null || experienceDescriptionModels.Count <= 0)
            {
                return(null);
            }

            List <ExperienceDescription> toReturn = new List <ExperienceDescription>();

            foreach (var expDescription in experienceDescriptionModels)
            {
                var expDescTemp = new ExperienceDescription();

                if (expDescription.Id != null)
                {
                    expDescTemp.Id = expDescription.Id.Value;
                    _dbContext.ExperienceDescriptions.Attach(expDescTemp);
                }

                expDescTemp.Name        = expDescription.Name;
                expDescTemp.Description = expDescription.Description;
                expDescTemp.Position    = await GetOrCreatePositionAsync(expDescription.PositionDesc);

                toReturn.Add(expDescTemp);
            }
            return(toReturn);
        }
Ejemplo n.º 2
0
        // TODO réaliser complètement ce service pour alléger les fonctions du service ProExpService ??
        // Oui car on peut l'ajouter après une fermeture d'using, est ce bien? Askip ça évitera d'avoir une fonction de 150 lignes

        public async Task <int> UpdateAsync(int id, ExperienceDescriptionModel expDescModel)
        {
            using (ApplicationContext context = new ApplicationContext())
            {
                var entity = new ExperienceDescription
                {
                    Id          = id,
                    Description = expDescModel.Description,
                    Name        = expDescModel.Name,
                    ProExpId    = expDescModel.ProExpId,
                };

                var position =
                    await context.Positions
                    .FirstOrDefaultAsync(x => x.Description == expDescModel.PositionDesc);

                if (position == null)
                {
                    position = new Position
                    {
                        Description = expDescModel.PositionDesc
                    };
                }

                entity.Position = position;

                context.ExperienceDescriptions.AddOrUpdate(entity);
                await context.SaveChangesAsync();

                return(entity.Id);
            }
        }
        public IActionResult StoreOrUpdateData([FromBody] JObject data, ExperienceDescription expDesc)
        {
            try
            {
                expDesc = new ExperienceDescription();

                string userId       = data["userId"].ToObject <string>();
                string internshipId = data["internshipId"].ToObject <string>();
                string taskId       = data["taskId"].ToObject <string>();
                string date         = data["taskDate"].ToObject <string>();
                int    noOfTimes    = data["noOfTimes"].ToObject <int>();

                expDesc.NoOfTimes    = noOfTimes;
                expDesc.TaskId       = taskId;
                expDesc.UserId       = userId;
                expDesc.InternshipId = internshipId;
                expDesc.Date         = date;
                expDesc.IsChecked    = true;

                var check = _context.ExperiencesDescriptions.AsQueryable()
                            .Any(expColl => expColl.TaskId == expDesc.TaskId && expColl.Date == date && expColl.UserId == expDesc.UserId);

                if (check)
                {
                    var filter = Builders <ExperienceDescription> .Filter.Eq(x => x.TaskId, taskId);

                    var filter2 = Builders <ExperienceDescription> .Filter.Eq(x => x.UserId, userId);

                    filter = filter & filter2 & (Builders <ExperienceDescription> .Filter.Eq(x => x.Date, date));

                    if (noOfTimes == 0)
                    {
                        _context.ExperiencesDescriptions.UpdateOneAsync(filter, Builders <ExperienceDescription>
                                                                        .Update.Set("NoOfTimes", expDesc.NoOfTimes)
                                                                        .Set("IsChecked", false));
                    }

                    else
                    {
                        _context.ExperiencesDescriptions.UpdateOneAsync(filter, Builders <ExperienceDescription>
                                                                        .Update.Set("NoOfTimes", expDesc.NoOfTimes)
                                                                        .Set("IsChecked", true));
                    }
                }
                else
                {
                    _context.ExperiencesDescriptions.InsertOne(expDesc);
                }
            }

            catch (Exception ex)
            {
                throw ex;
            }

            return(Ok());
        }
Ejemplo n.º 4
0
        public async Task <bool> RemoveAsync(int id)
        {
            using (ApplicationContext context = new ApplicationContext())
            {
                ExperienceDescription entity = await context.ExperienceDescriptions.FirstOrDefaultAsync(x => x.Id == id);

                if (entity != null)
                {
                    context.ExperienceDescriptions.Remove(entity);
                }

                await context.SaveChangesAsync();

                return(true);
            }
        }