Beispiel #1
0
        public async Task <IHttpActionResult> PostUserJob(AddUserJobBindingModel job)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var userId = this.User.Identity.GetUserId();

            if (userId == null)
            {
                return(this.BadRequest("Invalid session token."));
            }

            Guid jobId = await getJobId(job);

            this.Data.UserJobs.Add(new UserJob()
            {
                JobId       = jobId,
                UserId      = userId,
                Description = job.Description,
                StartDate   = job.StartDate,
                EndDate     = job.EndDate
            });

            await this.Data.SaveChangesAsync();

            return(this.StatusCode(HttpStatusCode.Created));
        }
Beispiel #2
0
        public async Task <IHttpActionResult> PutUserJob(string id, AddUserJobBindingModel job)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var userId = this.User.Identity.GetUserId();

            if (userId == null)
            {
                return(this.BadRequest("Invalid session token."));
            }

            var userJob = await this.Data.UserJobs.All().FirstOrDefaultAsync(uj => uj.Id == new Guid(id) && uj.UserId == userId);

            if (userJob == null)
            {
                return(NotFound());
            }

            Guid newJobId = await getJobId(job);

            var oldJobId = userJob.JobId;

            userJob.JobId       = newJobId;
            userJob.StartDate   = job.StartDate;
            userJob.EndDate     = job.EndDate;
            userJob.Description = job.Description;
            await this.Data.SaveChangesAsync();

            await removeUnusedJobAndCompany(oldJobId);

            return(this.StatusCode(HttpStatusCode.NoContent));
        }
Beispiel #3
0
        private async Task <Guid> getJobId(AddUserJobBindingModel job)
        {
            var existJob = await this.Data.Jobs.All().FirstOrDefaultAsync(j => j.Name == job.Name && j.Company.Name == job.CompanyName);

            Guid newJobId;

            if (existJob == null)
            {
                var existCompany = await this.Data.Companies.All().FirstOrDefaultAsync(c => c.Name == job.CompanyName);

                Guid newCompanyId;
                if (existCompany == null)
                {
                    var newCompany = new Company()
                    {
                        Name      = job.CompanyName,
                        CreatedOn = DateTime.Now
                    };

                    this.Data.Companies.Add(newCompany);
                    await this.Data.SaveChangesAsync();

                    newCompanyId = newCompany.Id;
                }
                else
                {
                    newCompanyId = existCompany.Id;
                }

                var newJob = new Job()
                {
                    Name      = job.Name,
                    CompanyId = newCompanyId
                };

                this.Data.Jobs.Add(newJob);
                await this.Data.SaveChangesAsync();

                newJobId = newJob.Id;
            }
            else
            {
                newJobId = existJob.Id;
            }
            return(newJobId);
        }