public static DeliverableDetailViewModel MapFrom(DeliverableDetail d)
 {
     return(new DeliverableDetailViewModel
     {
         ID = d.ID,
         DelID = d.DelID,
         DateDue = d.DateDue,
         DateCompleted = d.DateCompleted,
         Notes = d.Notes
     });
 }
        public async Task <IHttpActionResult> Put(long ID, DeliverableDetail deldet)
        {
            if (!ModelState.IsValid)
            {
                System.Diagnostics.Debug.WriteLine("BadModelState");
                return(BadRequest(ModelState));
            }

            if (ID != deldet.ID)
            {
                System.Diagnostics.Debug.WriteLine("BadReq");
                return(BadRequest());
            }

            DeliverableDetail upDel = (DeliverableDetail)db.DeliverableDetails.Where(x => x.ID == ID).First();

            upDel.DateCompleted = DateTime.Now;


            db.DeliverableDetails.Attach(upDel);
            var entry = db.Entry(upDel);

            entry.Property(e => e.DateCompleted).IsModified = true;
            // other changed properties
            db.SaveChanges();

            //db.Entry(deldet).State = EntityState.Modified;
            //System.Diagnostics.Debug.WriteLine("Modified");
            try
            {
                System.Diagnostics.Debug.WriteLine("Saved " + ID.ToString() + " | " + deldet.DateCompleted.ToString());
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!DelDetExists(ID))
                {
                    System.Diagnostics.Debug.WriteLine("Catch If");
                    return(NotFound());
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Catch If Else");
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
 public async Task <IHttpActionResult> Put(DeliverableDetail deldet)
 {
     return(await this.Put(deldet.ID, deldet));
 }
        public async Task <IHttpActionResult> Post(Deliverable del)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Deliverables.Add(del);
            await db.SaveChangesAsync();

            DeliverableDetail delDet = new DeliverableDetail();

            delDet.DelID = del.ID;
            var newDelDate = del.FirstDueDate.ToString().Split(' ')[0];
            var d          = newDelDate.Split('/');

            if (d[0].Length == 1)
            {
                d[0] = '0' + d[0];
            }
            if (d[1].Length == 1)
            {
                d[1] = '0' + d[1];
            }
            newDelDate = d[0] + '/' + d[1] + '/' + d[2];
            System.Diagnostics.Debug.WriteLine(newDelDate);
            var interval = 0;

            if (del.Frequency == "Weekly")
            {
                interval = 1095;
                for (var i = 0; i <= interval; i += 7)
                {
                    delDet.DateDue = DateTime.ParseExact(newDelDate, "MM/dd/yyyy", null).AddDays(i);
                    db.DeliverableDetails.Add(delDet);
                    await db.SaveChangesAsync();
                }
            }
            else if (del.Frequency == "Monthly")
            {
                interval = 36;
                for (var i = 0; i <= interval; i++)
                {
                    delDet.DateDue = DateTime.ParseExact(newDelDate, "MM/dd/yyyy", null).AddMonths(i);
                    db.DeliverableDetails.Add(delDet);
                    await db.SaveChangesAsync();
                }
            }
            else if (del.Frequency == "Quarterly")
            {
                interval = 36;
                for (var i = 0; i <= interval; i += 3)
                {
                    delDet.DateDue = DateTime.ParseExact(newDelDate, "MM/dd/yyyy", null).AddMonths(i);
                    db.DeliverableDetails.Add(delDet);
                    await db.SaveChangesAsync();
                }
            }
            else if (del.Frequency == "Semi-Annual")
            {
                interval = 36;
                for (var i = 0; i <= interval; i += 6)
                {
                    delDet.DateDue = DateTime.ParseExact(newDelDate, "MM/dd/yyyy", null).AddMonths(i);
                    db.DeliverableDetails.Add(delDet);
                    await db.SaveChangesAsync();
                }
            }
            else if (del.Frequency == "Annual")
            {
                interval = 3;
                for (var i = 0; i <= interval; i++)
                {
                    delDet.DateDue = DateTime.ParseExact(newDelDate, "MM/dd/yyyy", null).AddYears(i);
                    db.DeliverableDetails.Add(delDet);
                    await db.SaveChangesAsync();
                }
            }


            return(Ok(DeliverablesViewModel.MapFrom(del)));
        }
 public static async Task <DeliverableDetailViewModel> MapFromAsync(DeliverableDetail d)
 {
     return(await Task.Run(() => { return MapFrom(d); }));
 }