/// <summary> /// Maps the usage to model. Need to use automapper? /// </summary> /// <param name="usage">The usage.</param> /// <param name="details">The details.</param> /// <returns>EggFarmSystem.Models.ConsumableUsage.</returns> private ConsumableUsage MapUsageToModel(Models.Data.ConsumableUsage usage, List<Models.Data.ConsumableUsageDetail> details) { var model = new ConsumableUsage(); model.Id = usage.Id; model.Date = usage.Date; model.Total = usage.Total; model.Details = new List<ConsumableUsageDetail>(); foreach (var detail in details) { var detailModel = new ConsumableUsageDetail { ConsumableId = detail.ConsumableId, Count = detail.Count, HouseId = detail.HouseId, SubTotal = detail.SubTotal, UnitPrice = detail.UnitPrice }; model.Details.Add(detailModel); } return model; }
public HttpResponseMessage Post(ConsumableUsage value) { HttpResponseMessage response = null; ValidateModel(value); if (!ModelState.IsValid) { response = Request.CreateResponse(HttpStatusCode.BadRequest, GetModelErrors()); return response; } try { service.Save(value); response = Request.CreateResponse(HttpStatusCode.Created, value); string uri = Url.Link("DefaultApi", new { id = value.Id }); response.Headers.Location = new Uri(uri); } catch (Exception ex) { response = Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); } return response; }
/// <summary> /// Saves the specified model. /// </summary> /// <param name="model">The model.</param> /// <returns><c>true</c> if save success, <c>false</c> otherwise</returns> public void Save(ConsumableUsage model) { using (var db = factory.OpenDbConnection()) { using (var trans = db.OpenTransaction()) { bool isNew = model.IsNew; Models.Data.ConsumableUsage usage = null; if (isNew) { usage = db.FirstOrDefault<Models.Data.ConsumableUsage>(u => u.Date == model.Date); } else { usage = db.Query<Models.Data.ConsumableUsage>("Date = @Date and Id <> @Id", new {Date = model.Date, Id = model.Id.ToString()}) .FirstOrDefault(); } if (usage != null) { trans.Rollback(); throw new ServiceException("Usage_DuplicateDate"); } if (isNew) model.Id = Guid.NewGuid(); usage = Mapper.Map<ConsumableUsage, Models.Data.ConsumableUsage>(model); if(isNew) db.InsertParam(usage); else db.UpdateParam(usage); if (! isNew) db.Delete<Models.Data.ConsumableUsageDetail>(where: "UsageId = {0}".Params(usage.Id.ToString())); foreach (var detailModel in model.Details) { var detail = Mapper.Map<ConsumableUsageDetail, Models.Data.ConsumableUsageDetail>(detailModel); detail.UsageId = usage.Id; db.InsertParam(detail); } try { trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw new ServiceException(ex.Message); } } } }
public HttpResponseMessage Put(Guid id, ConsumableUsage value) { ValidateModel(value); if (! ModelState.IsValid || value.Id != id) { return Request.CreateResponse(HttpStatusCode.BadRequest, GetModelErrors()); } HttpResponseMessage response = null; try { service.Save(value); response = Request.CreateResponse(HttpStatusCode.OK); } catch (Exception ex) { response = Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message); } return response; }