// POST: api/Employments
        public async Task <ViewEmployments> PostEmployments(ViewEmployments employments)
        {
            var employmentToAdd = db.Employments.Add(factory.CreateEmploymentsModelFromDb(employments)).Entity;
            await db.SaveChangesAsync();

            return(factory.CreateEmploymentsViewModel(employmentToAdd));
        }
        public async Task <IActionResult> PostEmployments([FromBody] ViewEmployments employments)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var postEmployments = await employmentsManager.PostEmployments(employments);

            return(CreatedAtAction("GetEmployments", postEmployments));
        }
 public async Task <IActionResult> PutEmployments([FromRoute] int id, [FromBody] ViewEmployments employments)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     if (!employmentsManager.EmploymentsExists(id))
     {
         return(NotFound());
     }
     return(Ok(await employmentsManager.PutEmployments(id, employments)));
 }
 //View products time of put
 public void EmploymentPutMaker(ViewEmployments employments, Employments employmentsInDb)
 {
     employmentsInDb.Price          = employments.Price;
     employmentsInDb.EmploymentName = employments.EmploymentName;
     employmentsInDb.CustomerId     = employments.CustomerId;
     employmentsInDb.Customer       = employments.Customer;
     //employments.GuId = employmentsInDb.GuId;
     employmentsInDb.Schedules = (ICollection <Schedules>)employments.ViewSchedules;
     for (var i = 0; i < employmentsInDb.Schedules.Count; i++)
     {
         CreateViewSchedules(employmentsInDb.Schedules.ElementAt(i));
     }
 }
        // PUT: api/Employments/5
        public async Task <ViewEmployments> PutEmployments(int id, ViewEmployments employments)
        {
            //TODO:Correct this schedul put
            //var productsModelFromDb = factory.CreateEmploymentsModelFromDb(employments);

            var employmentsInDb = await db.Employments.Include(x => x.Schedules).SingleOrDefaultAsync(x => x.EmploymentId == id);

            db.Employments.Attach(employmentsInDb);
            factory.EmploymentPutMaker(employments, employmentsInDb);
            db.SaveChanges();

            return(employments);
        }
        //Employments to View
        public ViewEmployments CreateEmploymentsViewModel(Employments requestEmployments)
        {
            var empl = new ViewEmployments
            {
                Customer       = requestEmployments.Customer,
                EmploymentName = requestEmployments.EmploymentName,
                CustomerId     = requestEmployments.CustomerId,
                MakingTime     = requestEmployments.MakingTime,
                Price          = requestEmployments.Price,
                GuId           = requestEmployments.GuId
            };

            foreach (var schedule in requestEmployments.Schedules)
            {
                var viewSchedules = CreateViewSchedules(schedule);
                empl.ViewSchedules.Add(viewSchedules);
            }
            return(empl);
        }
        //View to Employments
        public Employments CreateEmploymentsModelFromDb(ViewEmployments virweEmployments)
        {
            var employments = new Employments
            {
                Customer       = virweEmployments.Customer,
                EmploymentName = virweEmployments.EmploymentName,
                CustomerId     = virweEmployments.CustomerId,
                Price          = virweEmployments.Price,
                MakingTime     = virweEmployments.MakingTime,
                GuId           = Guid.NewGuid()
            };

            foreach (var employmentsViewSchedule in virweEmployments.ViewSchedules)
            {
                var dbSchedules = CreateDbSchedules(employmentsViewSchedule);
                employments.Schedules.Add(dbSchedules);
            }
            return(employments);
        }