示例#1
0
        public async Task <ResourceOrderFill> SaveFillAsync(ResourceOrderFill fill, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (fill.ResourceOrderFillId == 0)
            {
                var orderFill = await _resourceOrderFillRepository.InsertAsync(fill, cancellationToken);

                if (orderFill != null)
                {
                    fill.ResourceOrderFillId = orderFill.ResourceOrderFillId;
                    foreach (var unit in fill.Units)
                    {
                        unit.ResourceOrderFillId = orderFill.ResourceOrderFillId;
                        var fillUnit = await _resourceOrderFillUnitRepository.InsertAsync(unit, cancellationToken);

                        if (fillUnit != null)
                        {
                            unit.ResourceOrderFillUnitId = fillUnit.ResourceOrderFillUnitId;
                        }
                    }
                }
            }
            else
            {
                await _resourceOrderFillRepository.UpdateAsync(fill, cancellationToken);

                foreach (var unit in fill.Units)
                {
                    await _resourceOrderFillUnitRepository.SaveOrUpdateAsync(unit, cancellationToken);
                }
            }


            return(fill);
        }
示例#2
0
        public async Task <ResourceOrderFill> CreateFill(ResourceOrderFill fill)
        {
            var savedFill = await _resourceOrdersRepository.SaveFill(fill);

            //_eventAggregator.SendMessage<ResourceOrderFillAddedEvent>(new ResourceOrderFillAddedEvent()
            //{
            //	Order = savedOrder
            //});

            return(savedFill);
        }
示例#3
0
        public async Task <ResourceOrderFill> SaveFill(ResourceOrderFill fill)
        {
            using (IDbConnection db = new SqlConnection(connectionString))
            {
                if (fill.ResourceOrderFillId == 0)
                {
                    var id = await db.InsertAsync <ResourceOrderFill>(fill);

                    if (id != null)
                    {
                        fill.ResourceOrderFillId = id.Value;
                        foreach (var unit in fill.Units)
                        {
                            unit.ResourceOrderFillId = id.Value;
                            var itemId = await db.InsertAsync <ResourceOrderFillUnit>(unit);

                            if (itemId != null)
                            {
                                unit.ResourceOrderFillUnitId = itemId.Value;
                            }
                        }
                    }
                }
                else
                {
                    await db.UpdateAsync(fill);

                    foreach (var unit in fill.Units)
                    {
                        await db.UpdateAsync(unit);
                    }
                }
            }

            return(fill);
        }
示例#4
0
 public async Task <ResourceOrderFill> CreateFillAsync(ResourceOrderFill fill, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(await _resourceOrdersRepository.SaveFillAsync(fill, cancellationToken));
 }
示例#5
0
        public async Task <IActionResult> FillItem(FillItemInput data)
        {
            var model = new FillItemView();

            if (data == null || data.Id == 0 || data.Units == null || data.Units.Count() <= 0)
            {
                model.Error        = true;
                model.ErrorMessage = "There was an issue trying to process you fill. Please open the order and try the fill again.";

                return(View(model));
            }

            var item = await _resourceOrdersService.GetOrderItemById(data.Id);

            if (item == null)
            {
                model.Error        = true;
                model.ErrorMessage = "Unable to find this order. The order may be been closed or removed.";

                return(View(model));
            }

            var order = await _resourceOrdersService.GetOrderById(item.ResourceOrderId);

            var settings = await _resourceOrdersService.GetSettingsByDepartmentId(order.DepartmentId);

            var department = _departmentsService.GetDepartmentById(order.DepartmentId);

            var fill = new ResourceOrderFill();

            fill.ResourceOrderItemId = item.ResourceOrderItemId;
            fill.DepartmentId        = DepartmentId;
            fill.FillingUserId       = UserId;
            fill.ContactName         = data.Name;
            fill.ContactNumber       = data.Number;
            fill.Note       = data.Note;
            fill.LeadUserId = data.LeadUserId;
            fill.FilledOn   = DateTime.UtcNow;

            if (order.AutomaticFillAcceptance)
            {
                fill.Accepted   = true;
                fill.AcceptedOn = DateTime.UtcNow;

                if (settings != null && settings.DefaultResourceOrderManagerUserId != null)
                {
                    fill.AcceptedUserId = settings.DefaultResourceOrderManagerUserId;
                }
                else
                {
                    fill.AcceptedUserId = department.ManagingUserId;
                }
            }

            fill.Units = new List <ResourceOrderFillUnit>();
            foreach (var unit in data.Units)
            {
                var itemUnit = new ResourceOrderFillUnit();
                itemUnit.UnitId = unit;

                fill.Units.Add(itemUnit);
            }

            var savedFill = await _resourceOrdersService.CreateFill(fill);

            return(Json(new { id = savedFill.ResourceOrderFillId, error = model.Error, errorMessage = HttpUtility.UrlEncode(model.ErrorMessage) }));
        }